Django 数据库操作

设置Django主APP下的__init__.py 添加上import pymysql
pymysql.install_as_MySQLdb()并且在Django主APP下的settings.py 文件修改DATABASES函数 如下DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',     #数据库引擎
        'NAME': 'mymoxing',                           #数据库名称
        'USER':'admin',                           #数据库的用户名
        'PASSWORD':'Root110qwe',                  #数据库的密码
        'HOST':'127.0.0.1',                       #mysql服务器的域名或者IP地址
        'RORT':'3306',                            #mysql的一个端口号,默认是3306

    }
}导入Django里的相关库方法
from django.db.models import Count,Avg,Max,Min,Sum
导入Django模型里的模型类 #Test是在模型中定义的类方法 映射一下 就会在Linux服务器上自动创建数据库表结构
from .models import Test



创建的一个Django求数据库某表某字段的一个平均值
def tests(request):
    rs = Test.objects.all().aggregate(Avg('age'))
    print(rs)
    return HttpResponse('平均值输出成功')输出值为:{'age__avg': 21.0} 格式是字典 那么 键 'age__avg' 是 字段和方法组成 我们可以重命名 如下:
rs = Test.objects.all().aggregate(pingjunzhi=Avg('age'))
输出值为 {'pingjunzhi': 21.0}
其他函数使用 平均值 Avg 最小值 Min 最大值 Max 求和 Sum 
需要先使用  aggregate()  方法 再使用相关函数
rs = Test.objects.all().aggregate(Avg('id'),Min('id'),Max('id'),Sum('id'))

分组查询需要先用到 values字典格式输出 annotate是分组查询 
rs = Test.objects.all().values('note').annotate(count=Count('note')).values('note','count')
实例化数据库Test   字典格式化输出'note'字段  分组查询 获取note个数并且赋值给count  格式化输出'note','count'两个字段。
<QuerySet [{'note': '毕业于天津职业大学', 'count': 1}, {'note': '毕业于天津轻工学院', 'count': 2}, {'note': '毕业于天津大学', 'count': 1}]>
    from django.db.models import F
    #   F查询
    rs = Student.objects.filter(department__d_id__lt= F('s_id'))
    #add1 = Test.objects.all().update(age=F('age')+1)     #给年龄字段+1岁
    #Q查询 如果你需要执行更复杂的查询(例如OR语句),你可以使用Q对象。Q对象可以使用&(and)、|(or)操作符组合起来  使用~(not)操作符在Q对象前表示取反
    from django.db.models import Q
    rs = Test.objects.filter(name='刘刚',age=22)
#
    rs = Test.objects.filter(Q(name='刘刚')|Q(name='马超杰'))
    rs = Test.objects.filter(Q(name='马超杰')&~Q(id=3))
123完
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值