设置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完