• 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:Python37libsite-packagesdjangodbmodelsmanager.py", line 82, in manager_method
    return getattr(self.get_queryset(), name)(*args, **kwargs)
    File "D:Python37libsite-packagesdjangodbmodelsquery.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')
    
    更多学习笔记移步 https://www.cnblogs.com/kknote
  • 相关阅读:
    (转)android
    (转)Eclipse 扩大内存
    (转)setTextColor()的参数设置方式
    RelativeLayout里的gravity不能居中的解决方法
    hdu1010 Tempter of the Bone
    ubuntu系统下如何禁用笔记本触摸板
    十滴水,半成品,大多数关卡可以过去,不过也有几个过不去,仍在调试中,不断更新
    HDU1007 TLE代码和AC代码对比
    hdu1013
    1005 矩阵快速幂
  • 原文地址:https://www.cnblogs.com/kknote/p/14366345.html
Copyright © 2020-2023  润新知