Django查询、删除、更新数据

查询数据

查询无疑是数据库表中使用频率最高的操作。

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

通过name='红米MAX发布会'作为查询条件。

.....
>>> el = Event.object.get(name='红米MAX发布会')
>>> el
<Event: 红米MAX发布会>
>>> el.address
'北京会展中心'
>>> el.start_time
datetime.datetime(2016,9,22,14,0)
>>>
>>> Event.objects.get(name='红米MAX发布会').limit
2000
>>> Event.objects.get(name='发布会').address
Traceback (most recent call last):
   File "<console>",line 1,in <module>
   File "C:\Python35\lib\site-package\django\db\models\manager.py",line 85,
in manager_method
   return getatter(self.get_queryset(),name)(*args,**kwargs)
  File "C:\python35\lib\site-spackages\django\db\models\query.py",line 385,in get
   self.model._meta.object_mame
sign.models.DoesNotExist:Event matching query does not exit.

因为name='发布会'并没有完全匹配到发布会名称,所以会抛出DoesNotExist异常。但更多的时候我们会使用模糊查询。

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

.....
>>> e2 = Event.object.filter(name_contains='发布会')
>>> e2
<QuerySet [<Event:小米5发布会>,<Event:红米Pro发布会>,<Event: 红米MAX发布会>]>

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

接下来通过嘉宾查询其他关联的发布会信息。

.....
>>> g2 = Guent.objects.get(phone='13611001101')
>>> g2.delete()
(1,{'sign.Guest':1})

>>> Guest.objects.get(phone='13611001101').delete()
(1,{'sigin.Guest':1})

更新数据

查询phone=‘13611001101’的嘉宾,更新realname=‘andy2’,或者直接通过update()方法更新查询结果。

.....
>>> g3=Guest.objects.get(phone='13611001101')
>>> g3.realname='andy2'
>>> g3.save()

>>> Guest.object.select_for_update().filter(phone='1361101101').update(
realname='andy')
1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值