python-django(クエリー、集約、グループ化)

2500 ワード

#
"""
                    ----         ,       
 :    
        :(    .   .    )
        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)

 
転載先:https://www.cnblogs.com/chaoqi/p/10560869.html