数据库迁移
#生成迁移文件
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()