django 学习(十)—— 基本数据访问


当需要操作数据库时,不再需要通过SQL语句,Django为这些模型提供了高级的Python API。

运行manage.py提供的shell命令,来练习数据库表的操作。

 在该模式下可以操作Django模型。

1.基本数据访问:

from sign.models import Event, Guest  # 导入sign应用下Model中的Event类和Guest类

Event.objects.all()  # 获得Event中的所有对象

 查询所有嘉宾信息:

Guest.objects.all()  # 获得Guest中的所有对象

 2.入数据(新增发布会/嘉宾信息)

因为start_time字段需要设置日期时间,所以先导入datetime.datetime()方法。

  e1=Event(id=4, name='华为手机发布会',limit=2000,status=True,address='北京水立方',start_time=datetime(2022,1,22,12,0,0))

 通过save()方法保存插入的数据

简单写法:

Event.objects.create(id=6,name='红米发布会',limit=300,status=True,address='成都会展中心',start_time=datetime(2022,8,10,14,0,0))

 Guest.objects.create(realname='andy',phone=13611001101,email='andy@mail.com',sign=False,event_id=3)

3.查询数据

table.objects.get()方法用于从数据库表中取得一条匹配的结果,返回一个对象,如果记录不存在的话,那么它会报DoesNotExist类型错误。

 

 因为name='发布会'并没有完全匹配到发布会名称,所以会抛出DoesNotExist异常。

 table.objects.filter()方法是从数据库取得匹配的结果,返回一个对象列表,如果记录不存在的话,它会返回空列表[]。

e1=Event.objects.filter(name__contains='发布会')

 name为发布会的字段名,在name和contains之间用双下画线连接。这里contains部分会被Django翻译成SQL语句中的LIKE语句。

 查询phone='13611001101'这位嘉宾所参加的发布会的名称和地址。

 4.删除数据

查询phone='13611001101'的嘉宾,通过delete()方法删除

 也可以写成:

Guest.objects.get(phone='13611001101').delete() 

 5.更新数据

将名字为鲁迅的嘉宾名改为’陆续偶‘:

g1=Guest.objects.get(realname='鲁迅')

g1.realname='陆续偶'

g1.save()

简单写法:

 Guest.objects.select_for_update().filter(phone='13526998720').update(realname='andy')