django操作数据库数据,做增删改查

django操作数据库数据,做增删改查

插入数据
from sign.models import Event, Guest
from datetime import datetime
1.两步走
e1 = Event(id=3,name='nubia X Pro 发布会',limit=2000,status=True,address='厦门',start_time=datetime(2019,8,10,14,0,0))
e1.save()

2.一步搞定
Event.objects.create(id=7,name='nubia9',limit=9000,status=False,address='xiamen',start_time=datetime(2019,1,10,14,0,0))
Event.objects.create(id=3,name='nubia X Pro',limit=2000,status=True,address='xiamen',start_time=datetime(2019,08,10,14,0,0))

Guest.objects.create(realname='张三',phone=12345001101,email='zhangs@mail.com',sign=False,event_id=2)
Guest.objects.create(realname='李四',phone=13900000000,email='lis@mail.com',sign=True,event_id=4)
Guest.objects.create(realname='康平汆',phone=13600805241,email='kpc@mail.com',sign=True,event_id=5)
Guest.objects.create(realname='vivian',phone=13913301888,email='vv@mail.com',sign=True,event_id=3)
Guest.objects.create(realname='zhangailing',phone=13913301321,email='zal@mail.com',sign=False,event_id=7)
Guest.objects.create(realname='dulala',phone=13913301322,email='dll@mail.com',sign=False,event_id=7)
Guest.objects.create(realname='adu',phone=13999301322,email='ad@mail.com',sign=True,event_id=7)
需要说明的是,表的 id 字段已经设置了自增,所以,该字段为空可以添加数据,但在创建嘉宾时数据时
需要指定关联的发布会 id。Event 表指定了 id=3,Guest 表指定 event_id=3,所以嘉宾 andy 对应的是红米 MAX发布会
查询数据

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

e3=Event.objects.get(id=3)
e3.name
'nubia X Pro 发布会'
Event.objects.get(id=3).address
'厦门'
Guest.objects.get(phone='13600805241')
<Guest: 康平汆>
Guest.objects.get(phone='13600805241').event
<Event: 红米 MAX 发布会>
g.realname
'康平汆'
Guest.objects.get(phone='13600805241',sign=1)    多个条件
<Guest: 康平汆>

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

Event.objects.filter(id=1)
<QuerySet [<Event: 努比亚X发布会>]>
Event.objects.filter(name='nubia X Pro 发布会').address
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'QuerySet' object has no attribute 'address'
--filter模糊匹配
在 name 和 contains 之间用双下划线。这里,contains 部分会被 Django 翻译成 LIKE 语句。
e=Event.objects.filter(name__contains='nubia')
e
<QuerySet [<Event: nubia X Pro 发布会>, <Event: nubia 红魔 发布会>]>
删除数据

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

g1=Guest.objects.get(email='lis@mail.com')
g1.delete()
(1, {'sign.Guest': 1})
g1
<Guest: 李四>
g1=Guest.objects.get(email='lis@mail.com')
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "D:\Python37\lib\site-packages\django\db\models\manager.py", line 82, in manager_method
return getattr(self.get_queryset(), name)(*args, **kwargs)
File "D:\Python37\lib\site-packages\django\db\models\query.py", line 408, in get
self.model._meta.object_name
sign.models.Guest.DoesNotExist: Guest matching query does not exist.
更新数据

查询 phone='13611001101' 的嘉宾,更新 realname='andy2'

法1
g2=Guest.objects.get(phone='13611001101')
g2
<Guest: andy>
g2.realname='andy2'
g2
<Guest: andy2>
法2
g2.save()    没有保存的话,不会刷新到磁盘(不会落库)
Guest.objects.select_for_update().filter(phone='13611001101').update(realname='andy')
查询条件可以为多个
Guest.objects.select_for_update().filter(phone='13611001101',sign=0).update(realname='andy2')
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

我是一言

让我看看你的头像

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值