查询数据
查询无疑是数据库表中使用频率最高的操作。
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)