python测试开发django(12)--ORM查询表结果
2020-12-18 01:35
标签:except 准备 默认值 筛选条件 inf 调用 布尔值 序列 pattern 前言 django查询数据库的方法很多,不同的方法返回的结果也不太一样,本篇详细讲解关于查询的13个方法 数据准备 接着前面的User表,测试数据如下 可迭代对象queryset 查询整张表sql:select * from xjyn_users django里面查询数据库不需要写sql语句 r=表的类名称.objects.all() 返回的是整个表的内容,这里返回的是可迭代对象queryset,并没有直接返回全部数据 如果想取出数据,需要用到for循环读取; testdb.py内容如下; 查询username结果:{},
查询pwd结果:{},
查询mail结果:{}
‘‘‘.format(names,pwds,mails))
urls.py内容如下; 浏览器访问:http://127.0.0.1:8000/,结果如下: 筛选条件filter() 查询的时候添加删除条件,类似于SQL里面的where语句 filter()查询的结果是可迭代对象,如果结果只有一个,可以通过下标取值。找不到的时候给个默认值null testdb.py中新增内容如下; 查询mail结果:{} 在urls.py配置访问地址 可迭代的字典序列values() all()和filter()返回的都是可迭代的queryset序列,平常我们习惯取字典的对象,可以用values()方法获取Users.objects.all().values("user_name","mail")类似于SQL语句 testdb.py中新增内容: 查询结果:{} 在urls.py配置访问地址 查询结果:{‘user_name‘: ‘hui6‘, ‘mail‘: ‘123456@qq.com‘}{‘user_name‘: ‘he‘, ‘mail‘: ‘3‘}{‘user_name‘: ‘gun‘, ‘mail‘: ‘7‘} 其它可迭代对象 如果有“-”则代表降序,没有则默认升序 get()返回单个对象 django的get是从数据库里取得唯一一个匹配的结果,返回一个对象。调用中:objects管理器 返回查询到model对象(注意:查询结果有且只有一个才执行) 如果查询结果右多个,会报错MultipleObjectsReturned,如果查询结果有0个,会报错DoseNotExist 查询结果:{} 在urls.py配置访问地址 url(‘^selget$‘,testdb.sel_get),访问后得到的结果:查询结果:gun111 first() 和last() first(),last()方法:返回第一条记录和返回最后一条记录 调用者:queryset 返回model对象 在urls.py中配置访问地址 exists()和count() exists() 如果QuerySet包含数据,就返回True,否则返回False 由queryset对象调用 返回值布尔值 count:数数 由queryset对象调用 返回int python测试开发django(12)--ORM查询表结果 标签:except 准备 默认值 筛选条件 inf 调用 布尔值 序列 pattern 原文地址:https://www.cnblogs.com/canglongdao/p/14100453.html
#testdb.py
from django.http import HttpResponse
from xjyn.models import Users
def sel_all(request):
names=""
pwds=""
mails=""
r=Users.objects.all()
for i in r:
names+=" "+i.user_name
pwds+=" "+i.pwd
mails+=" "+i.mail
return HttpResponse(‘‘‘
#helloworld/helloworld/urls.py
from django.conf.urls import url
from . import testdb
urlpatterns=[
url(‘^$‘,testdb.sel_all),
]
select * from xjyn_users where user_name="hui6" and pwd="333"
def sel_filter(request):
r=""
result=Users.objects.filter(user_name="hui6",
pwd="333")
try:
r=result[0].mail
except:
r="null"
return HttpResponse("
url(‘^selectf$‘,testdb.sel_filter),访问后得到的结果:查询mail结果:123456@qq.com
select user_name,pwd from xjyn_users
def sel_values(request):
r=""
result=Users.objects.all().values("user_name","mail")
for i in result:
r+=str(i)
return HttpResponse(‘
url(‘^sel_v$‘,testdb.sel_values),访问后得到的结果:
查找用户名不是"hui6"的数据
et=Users.objects.exclude(user_name="hui6")
查询所有的数据,按mail字段排序,默认升序
result=Users.Objects.all().order_by("mail")
查询所有的数据,按mail字段排序,前面加个-是代表降序
result=Users.Objects.all().order_by("-mail")
查询所有的数据,按mail字段排序,默认升序,查询结果反向排序,功能跟-mail一样
result=Users.objects.all().order_by("mail").reverse()
和values差不多,只是这里返回的是元组
result=Users.objects.all().values_list("user_name","mail")
和sql里面的distinct去重一样
result=Users.objects.all().values("user_name","mail").distinct()
def sel_get(request):
r=""
re=Users.objects.get(mail="7")
r=re.user_name+re.pwd
return HttpResponse(‘
def sel_first(request):
rs=Users.objects.all().order_by("pwd")[0].mail
re=Users.objects.all().order_by("pwd").first()
r=re.mail
rel = Users.objects.all().order_by("pwd").last()
rl = rel.mail
return HttpResponse(‘查询rs结果:{},first结果:{},last结果:{}‘.format(rs,r,rl))
url(‘^self$‘,testdb.sel_first),访问结果如下图
exists:由queryset对象调用 返回值布尔值
is_exist=Users.objects.all().exists()
count:数数 ;由queryset对象调用,返回int
ret=Users.objects.all().count()
上一篇:C语言基本构成
文章标题:python测试开发django(12)--ORM查询表结果
文章链接:http://soscw.com/index.php/essay/36981.html