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()

 

posted @ 2018-06-11 23:24  十七楼的羊  阅读(129)  评论(0编辑  收藏  举报