django orm查询

https://blog.csdn.net/weixin_40744265/article/details/88316555

https://www.cnblogs.com/liwenzhou/p/8660826.html

1.基础的增删改查

add delete update filter/get

2.一般:

 User.objects.filter(id__in=[1,2,5]) #相当于 User.objects.in_bulk([1,2,5])

models.Tb1.objects.filter(id__lt=10, id__gt=1)   # 获取id大于1 且 小于10的值

models.Tb1.objects.filter(id__range=[1, 3])      # id范围是1到3的,等价于SQL的bettwen and
 
类似的还有:startswith,istartswith, endswith, iendswith 

date字段还可以:
models.Class.objects.filter(first_day__year=2017)

3.related_name、related_query_name

4.select_related、prefetch_related

tt = Book.objects.all().select_related('publish','guige')
for t in tt:
    print(t.title,t.guige.name,t.publish.name)

建立外键时,提高连表操作效率(需在建立model时,设置)

https://www.cnblogs.com/tuifeideyouran/p/4232028.html

5.only、defer

1.支取表中id/name/age列,通过此方法查询的结果还是queryset,并且queryset内部为对象

models.User.objects.all().only("id", "name", "age")

返回对象[obj,],对象可以通过.属性调用only未标记的属性值

models.User.objacts.values("id","username")

返回对象[(id,username)]

2. 不取表中的name列

models.User.objects.all().defer("name")

6.extra

6.1select 

 tt = Book.objects.all().extra(
        select={"n":"select count(1) from blog_book"},
    )
    for t in tt:
        print(t.title,t.n)

#python初级 3
#php 3
#c++ 3
tt = Book.objects.all().extra(
        select={"n":"select count(1) from blog_book where id < %s"},
        select_params=[3]
    )
    for t in tt:
        print(t.title,t.n)
#
python初级 2
php 2
c++ 2

6.2where

6.3 order_by

tt = Book.objects.all().extra(
        where=["id=1 or id = 2",],
        order_by=["-id"]
    )

    for t in tt:
        print(t.title)
#
php
python初级

7.distinct

8.using

settings中配置多个数据库,确定在那个数据库操作

#确定在那个数据库查询
Book.objects.all().using('mysite_19')

9.dates、datetimes

tt = Book.objects.datetimes("add_time","hour",order="DESC",tzinfo=("Asia/Shanghai"))
    print(tt.query)
    for t in tt:
        print(t)

10aggragate

tt = Book.objects.aggregate(k=Count("id"),m=Count("publish",distinct=True))
print(tt)

11.bulk_create批量增加

book = [
        Book(title="老人与海",publish_id=3),
        Book(title="背影",publish_id=1),
    ]
Book.objects.bulk_create(book,10)

 12get_or_create、update_or_create

分组聚合、F、Q、原生sql语句

猜你喜欢

转载自blog.csdn.net/weixin_40744265/article/details/89225782