#
"""
---- 正向查询按字段,反向查询按表名
一: 一对多
正向查询:(字段对象.关联表.查询字段)
x_obj = models.Book.objects.filter(xxx).first()
x_obj.publish.email
反向查询:(字段对象.要查询的表名小写_set.all())
x_obj = models.Publish.objects.filter(xxx).first()
for i in x_obj.book_set.all():
print(i)
二: 多对对
正向查询:(字段对象.关联表.all()) 查询所有
x_obj = modles.Bookobjects.filter(xxx).first()
for author in x_obj.authors.all():
print(author.name, author.age) 反向查询:(字段对象.关联表_set.all())
x_obj = modles.Author.objects.filter(xxx).first()
for book in x_obj_set.all():
print(book.title) 三:一对一
正向查询:(字段对象.关联表名.关联表名字段)
x_obj = modles.Author.objects.filter(xxx).first()
x_obj = authorDetail.telephone 反向查询:()
x_obj = modles.AuthorDetail.objects.filter(xxx).first()
x_obj.author.name 四:聚合/分组 聚合:
from django.db.models import Sum,Count,Avg
ret = models.Book.objects.all().aggregate(price=Sum('price')) 分组:
1. queryset对象.annotate()
2. annotate进行分组统计,按前面select 的字段进行 group by
3. annotate() 返回值依然是 queryset对象,增加了分组统计后的键值对 modles.dep.objects.values("name").annotate(c=Count('emp__name')).values('name','c')
# 查询 dep 表, 按name 分组 , 将 emp下的name字段计数,返回结果是 name字段 和 计数结果 modles.book.objects.values('id').annotate(c=Content( ))
"""#
直接执行原生的SQL语句,类似pymysql的用法
# from django.db import connection
# cursor = connection.cursor() # 获取光标,等待执行SQL语句
# cursor.execute("""SELECT * from person where id = %s""", [1])
# row = cursor.fetchone()
# print(row)