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')