django 数据库操作
数据库迁移
#生成迁移文件 python manage.py makemigrations #执行迁移,创建数据库表 python manage.py migrate #查看数据库创建的sql语句! python manage.py sqlmigrate booktest 0001 #回退到指定版本 python manage.py migrate app_name 0001
数据库简单查询!
from booktest.models import BookInfo,HeroInfo from datetime import date #增加数据! 使用函数data(1990,1,1) 转换成日期函数! book = BookInfo.objects.create(btitle='西游记',bpub_date=date(1990,1,1),bread=17,bcomment = 123) BookInfo.objects.get(id=1) #查看数据总和! BookInfo.objects.count() # __ 下划线 表示调用函数或者对象属性! BookInfo.objects.filter(id__exact=1) BookInfo.objects.filter(bpub_date__gt=date(1990, 1, 1)) #__year 表示日期的年 BookInfo.objects.filter(bpub_date__year=1980)
引入F,Q对象
from django.db.models import Q,F #F() 函数表示表的两个属性进行对比! __gte 表示大于等于 __gt 表示大于 BookInfo.objects.filter(bread__gt=F('bcomment')).order_by('bcomment') BookInfo.objects.filter(bread__lt=F('bcomment')*2,bcomment = 80) #Q() 函数 可以使用 与或非 BookInfo.objects.filter(Q(bread=12)|~Q(bcomment=40))
聚合函数!
from django.db.models import Sum,Avg,Min,Max #函数参数是字符串! BookInfo.objects.aggregate(Sum('bread'))
关联查询!
'''外键是设在多的一方,也就是 heroinfo这里,hbook是外键''' #查询包含'八'一本有多少个英雄!直接使用外键操作! HeroInfo.onjects.filter(hbook__title__contains='八') #查询英雄对应的书,同过反向类名来查询(小写) BookInfo.objects.filter(heroinfo__hname__contains='小师妹') #修改数据与删除数据: HeroInfo.objects.filter(hname='沙悟净').update(hname='沙僧') HeroInfo.objects.filter(hname='沙悟净').delete()