django数据库基本操作-增删改查(tip)-基本
补充:django外键保存
#外键保存 form_data = Form_Data() project, is_created = Project_Name.objects.get_or_create(name=select_text) form_data.project = project
1、插入数据
1 Python代码 2 >>> from books.models import Publisher 3 >>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue', 4 ... city='Berkeley', state_province='CA', country='U.S.A.', 5 ... website='http://www.apress.com/') 6 >>> p1.save()
1 >>> from books.models import Publisher 2 >>> p1 = Publisher(name='Apress', address='2855 Telegraph Avenue', 3 ... city='Berkeley', state_province='CA', country='U.S.A.', 4 ... website='http://www.apress.com/') 5 >>> p1.save()
2、查询
1 Python代码 2 >>> Publisher.objects.all() 3 [<Publisher: Apress>, <Publisher: O'Reilly>]
1 [python] view plain copy 2 >>> Publisher.objects.all() 3 [<Publisher: Apress>, <Publisher: O'Reilly>]
获取单个对象:
1 Python代码 2 >>> Publisher.objects.get(name="Apress") 3 <Publisher: Apress>
1 [python] view plain copy 2 >>> Publisher.objects.get(name="Apress") 3 <Publisher: Apress>
如果结果是多个对象或者没有返回结果则会抛出异常
3、条件
筛选:
1 Python代码 2 >>> Publisher.objects.filter(name='Apress') 3 [<Publisher: Apress>]
1 >>> Publisher.objects.filter(name='Apress') 2 [<Publisher: Apress>]
1 Python代码 2 >>> Publisher.objects.filter(name__contains="press") 3 [<Publisher: Apress>]
1 [python] view plain copy 2 >>> Publisher.objects.filter(name__contains="press") 3 [<Publisher: Apress>]
__contains部分会被Django翻译成LIKE语句
排序:
1 Python代码 2 >>> Publisher.objects.order_by("name") 3 [<Publisher: Apress>, <Publisher: O'Reilly>
1 python] view plain copy 2 >>> Publisher.objects.order_by("name") 3 [<Publisher: Apress>, <Publisher: O'Reilly>]
相当于 order by name asc
1 Python代码 2 >>> Publisher.objects.order_by("-name")
1 [python] view plain copy 2 >>> Publisher.objects.order_by("-name")
加个负号相当于 order by name desc
限制返回数据:
1 Python代码 2 >>> Publisher.objects.order_by('name')[0] 3 <Publisher: Apress>
1 [python] view plain copy 2 >>> Publisher.objects.order_by('name')[0] 3 <Publisher: Apress>
相当于 limit 1
1 Python代码 2 >>> Publisher.objects.order_by('name')[0:2]
1 [python] view plain copy 2 >>> Publisher.objects.order_by('name')[0:2]
相当于 OFFSET 0 LIMIT 2
4、更新
1 Python代码 2 >>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
1 [python] view plain copy 2 >>> Publisher.objects.filter(id=52).update(name='Apress Publishing')
1 Python代码 2 >>> p = Publisher.objects.get(name='Apress') #先查询 3 >>> p.name = 'Apress Publishing' #更新 4 >>> p.save() #保存
1 [python] view plain copy 2 >>> p = Publisher.objects.get(name='Apress') #先查询 3 >>> p.name = 'Apress Publishing' #更新 4 >>> p.save() #保存
5、删除
1 Python代码 2 >>> p = Publisher.objects.get(name="O'Reilly") 3 >>> p.delete()
1 [python] view plain copy 2 >>> p = Publisher.objects.get(name="O'Reilly") 3 >>> p.delete()
1 Python代码 2 >>> Publisher.objects.filter(country='USA').delete()
1 [python] view plain copy 2 >>> Publisher.objects.filter(country='USA').delete()