# """ ---- 正向查詢按字段,反向查詢按表名 一: 一對多 正向查詢:(字段對象.關聯表.查詢字段) 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)
