Django开发:常用数据库操作总结
查询类操作
1)查询所有结果,相当于 select * z v sq Conditional query ,其中filter与SQL中相关,用于过滤查询结果 3)获取单个对象,get方法的参数一般是模型的主键。如果找不到则报错 4) 限制返回的结果数据量,相当于sql中使用order_by的限制排序。如果按字段a倒序排序,就是order_by("-time") 5) 链式查询 6) 多条件参数查询,传递字典,构建查询条件 7) 传递对象Q并创建查询条件 1。第一步是构造对象 Q: 2.第二步,使用Q对象作为查询参数。多个 Q 对象的关系为 a: filter() 等函数可以接受 Q 对象和条件参数,但 Q 对象必须放在条件参数之前 8 ) 过滤不满足条件的操作
list = Test.objects.all()
fromdjango.db import connection
cursor = connection.cursor()
cursor.execute(“select * from Test where name = %s”, "yyp")
row = cursor.fetchone()
传递多个参数: result = Test.objects.filter(id=1, name='test')
如果有多个条件和查询,直接用逗号分隔。过滤函数中的参数是测试模型中的所有字段
test_obj = Test.objects.get(id=1)
Test.objects.order_by('name')[0:2]
Test.objects.filter(name='test').order_by(“-ctime”)
data =测试。 objects.filter(**query_dict).order_by(“- ctime”).values
其中query_dict是字典,key是条件字段,value是条件值
query_dict = {'id ':123, 'name':'yyp'}
fromdjango.db.models import Q
Q(name__startswith='h') | Q(name__startswith='p')
Test.objects.filter(
Q(date='2018-10-10 00:00:00),❙❙❙ Q(name__startswith='h') | Q(name__startswith ='p')
data = Test .objects.exclude(id=1)
传入条件查询
q1 = Q()
q1.connector = 'OR' #连接方式
q1.children.append(('id', 1))
q1.children.append(('id', 2))
q1.children.append(('id', 3))
models.Tb1.objects.filter(q1)
合并条件查询合并条件查询♶ 1 ) 添加新记录
test1 = Test(name='yyp')
test1.save()
首先更新类操作♶)❝,然后修改对象,然后保存
test1 = Test.objects. get (ID = 1)
Test1.name = 'Google'
Test1.save ()
2) 条件更新字符串 1object. (name='Google')
删除操作
1) 首先要求获取要删除的对象,然后直接删除操作
// 删除id=1的数据 ? .delete()
与QuerySet相关
Django中模型查询的结构类型是QuerySet,它基本上是一组查询对象。
1) 将多个查询结果转换为字典列表
// all()方法查询一组查询,并使用values方法将其转换为字典集合
= Test .objects.all( ).values( )
data_dict_list = list(data)
---“{101}IDQuery :XXX , “name ”:XXX}]>
2) QuerySet 对象转换为字典对象
fromdjango.forms.models import model_to_dict
object ❙
id=1 )
data_dict = model_to_dict(data)
3) 序列化为 json 数据
对于很多 Web 应用开发接口来说,json 数据文件是从 DB 返回的,哪些查询可以考虑 django-rest 的序列化器类-framework库,参见:教程一:序列化
查询条件汇总
字段名__op:
__exact 精确等于 like ‘aaa’ __iexact精确等于忽略大小写ilike‘aaa’ __contains 包含 like ‘%aaa%’ __icontains包含忽略大小写ilike‘%aaa%’,但是对于sqlite来说,contains的作用效果等同于icontains。 __gt大于 __gte大于等于 __lt小于 __lte小于等于 __in 存在于一个list范围内 __startswith以…开头 __istartswith以…开头忽略大小写 __endswith以…结尾 __iendswith以…结尾,忽略大小写 __range 在…范围内 __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的日 __isnull=True/False
使用SQL命令查询本文由腾讯蓝鲸智能云撰写,编辑发布
版权声明
本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。