zoukankan      html  css  js  c++  java
  • django框架学习:十三.数据库查询表结构

    前言

    django框架支持多种方法查询数据库,不同的方法返回的结果也不太一样,本篇详细介绍一下关于查询常用的13个方法。

    返回对象是对象列表的:all(),filter(),exclude(),order_by(),reverse(),values_list(),distinct()

    返回结果是对象的:get(),frist(),last()

    返回结果是布尔值:exists()

    返回结果是数字:count()

    数据库查询准备

    在上User表中添加测试数据

     可迭代对象queryset

     django里面查询数据库不需要写sql语句 表的类名称.objects.all()返回的是整个表的内容,这里返回的是可迭代对象queryset,并没有直接返回全部数据,如果想取出数据,需要用到for循环读取。

     urls.py设置select_all 访问路径

     打开浏览器:ip+8000/select_all

    进行访问,返回如下结果

     筛选条件filter()

    查询的时候添加条件,类似sql里的where语句

    select * from ke24_user  where user_name ='liushui' ;

    filter 查询的结果是可迭代对象,如果结果只有一个,可以通过下表取值,找不到值可以给个默认值null。

    testdb.py文件创建select_filter方法

    urls.py创建访问路径

    终端命令行启动django服务

    python manage.py runserver 0.0.0.0:8000 

    浏览器输入:ip:8080/select_filter/ ,得到的邮箱:

     可迭代的字典序列values()

    all()和filter()返回的都是可迭代的queryset序列,平常我们习惯获取字典的对象,可以用values()方法获取User.objects.all().values("user_name"

    ,"mail")类似于sql语句

    select user_name,mail from ke24_user;

    在urls.py配置访问地址 url(r'^select_values$', testdb.select_values),访问后得到的结果
    查询到的信息:{'user_name': 'liushui', 'psw': '123456'}{'user_name': 'liushui0', 'psw': '12345'}{'user_name': 'liushui1', 'psw': '123'}{'user_name': 'liushui11', 'psw': '123456'}

    其它可迭代对象

    exclude()它包含了与所给筛选条件不匹配的对象,调用者:objects管理器 返回queryset

    查找用户名不是liushui的数据库:

    res=User.objects.exclude(user_name='liushui') 

    order_by()是对查询结果排序,由queryset对象调用,返回值是queryset

    查询所有的数据按照mail字段排序,默认升序

    res=User.objects.all().order_by('mail')

    查询所有的数据按照mail字段排序,前面加个-代表降序

    res=User.objects.all().order_by('-mail')

    reverse()对结果进行反向排序,由queryset对象调用,返回值是queryset

    查询所有的数据按照mail字段排序,默认升序,查询结果反向排序,和-mail实现效果一样

    res=User.objects.all().order_by('mail').revrse()

    values_list()由queryset对象调用,返回值是queryset的一个元组序列

    res=User.objects.all().values_list("user_name","mail")

    distinct()从返回的结果提出重复记录,由queryset对象调用,返回值是queryset

    和sql语句中的distinct去重一样

    res=User.objects.all().values("user_name","mail").distinct()

    get()返回单个对象

    django中的get是从数据库获取唯一匹配的结果。查询结果有且只有一个才执行,查询结果多个或者一个都会报错。

     查询到的结果

     frist和last

    返回第一条记录和返回最后一条记录

    查询第一个结果:123456@163.com

    查询最后结果:897564

    exists()和count()

    exists() 如果QuerySet包含数据,就返回True,否则返回False 由queryset对象调用 返回值布尔值

    exists: 由queryset对象调用 返回值布尔值

    is_exist=User.objects.all().exists()

    count : 数数 由queryset对象调用 返回int

    ret=User.objects.all().count()

  • 相关阅读:
    Tempter of the Bone HDU
    hihocoder1015 kmp算法
    hihocoder1174 拓扑排序1
    hihocoder1175 拓扑排序2
    Statues CodeForces
    【Git学习】git遇到fatal: bad config line 1 in file C:/Users/lenovo/.gitconfig
    【Windows学习】如何设置程序默认“以管理员身份运行”
    【Python学习】urlparse urllib urllib2 urllib3 requests
    【Python学习】操作excel样例
    【接口测试学习】web和APP接口抓包
  • 原文地址:https://www.cnblogs.com/liushui0306/p/12617948.html
Copyright © 2011-2022 走看看