写点什么

Django 查询、删除、更新数据

  • 2023-05-12
    北京
  • 本文字数:921 字

    阅读完需:约 3 分钟

查询数据

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

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

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

.....>>> el = Event.object.get(name='红米MAX发布会')>>> el<Event: 红米MAX发布会>>>> el.address'北京会展中心'>>> el.start_timedatetime.datetime(2016,9,22,14,0)>>>>>> Event.objects.get(name='红米MAX发布会').limit2000>>> Event.objects.get(name='发布会').addressTraceback (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_mamesign.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
复制代码
用户头像

社区:ceshiren.com 微信:ceshiren2023 2022-08-29 加入

微信公众号:霍格沃兹测试开发 提供性能测试、自动化测试、测试开发等资料、实事更新一线互联网大厂测试岗位内推需求,共享测试行业动态及资讯,更可零距离接触众多业内大佬

评论

发布
暂无评论
Django查询、删除、更新数据_测试_测吧(北京)科技有限公司_InfoQ写作社区