Django ORM

Django ORM
order_by排序,不支持链式链接,可以传入多个参数,表示多个字段排序
all查询全部
get得到一个对象
filter过滤。 里边写查询条件。可以使用and or,也可以使用多个filter链式链接
create创建新的对象,在sql中会新增一条记录
delete删除对象,删除sql中的一条记录
update更新对象,更新sql中的一条记录
frist得到第一个对象
last最后一个对象
列名__regex 正则查询符合条件的数据
列名__range 在此范围的数据
列名__isnu 是否为空
列名__icontains 忽略大小写
列名__in 在此列表的数据
列名__lt 小于。 加e小于等于
列名__gt 大于。 加e大于等于
时间列名__year 取出年份为。。。的数据。 月日时分秒同理
update_or_create(条件, defaults={‘token’: tk}),如果找到更新 如果没有找到创建defaults={} 中的数据
多表查询时
反向查询 表名小写_set
通过object的形式反向绑定外键关系
authorobj = models.Author.objects.filter(id=1).first()
objects = models.Book.objects.all()
authorobj.book_set.add(*objects)
authorobj.save()
通过values双下滑线的形式,objs.values(“小写表名__字段”)
正向查询。通过外键
执行原生sql
1.执行自定义SQL
from django.db import connection, connections
cursor = connection.cursor() # cursor = connections[‘default’].cursor()
cursor.execute(""“SELECT * from auth_user where id = %s”"", [1])
row = cursor.fetchone()
2.使用extra方法
extra(self, select=None, where=None, params=None, tables=None, order_by=None, select_params=None)
Entry.objects.extra(select={‘new_id’: “select col from sometable where othercol > %s”}, select_params=(1,))
Entry.objects.extra(where=[‘headline=%s’], params=[‘Lennon’])
Entry.objects.extra(where=[“foo=‘a’ OR bar = ‘a’”, “baz = ‘a’”])
Entry.objects.extra(select={‘new_id’: “select id from tb where id > %s”}, select_params=(1,), order_by=[’-nid’])
3.使用raw方法
解释:执行原始sql并返回模型
说明:依赖model多用于查询
用法:
book = Book.objects.raw(“select * from hello_book”)
for item in book:
print(item.title)
F
from django.db.models import F
models.Tb1.objects.update(num=F(‘num’)+1)
Q
方式一:
Q(nid__gt=10)
Q(nid=8) | Q(nid__gt=10)
Q(Q(nid=8) | Q(nid__gt=10)) & Q(caption=‘root’)
方式二:
con = Q()
q1 = Q()
q1.connector = ‘OR’
q1.children.append((‘id’, 1))
q1.children.append((‘id’, 10))
q1.children.append((‘id’, 9))
q2 = Q()
q2.connector = ‘OR’
q2.children.append((‘c1’, 1))
q2.children.append((‘c1’, 10))
q2.children.append((‘c1’, 9))
con.add(q1, ‘AND’)
con.add(q2, ‘AND’)
models.Tb1.objects.filter(con)
其他参考https://www.cnblogs.com/sss4/p/7070942.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值