zoukankan      html  css  js  c++  java
  • sqlchemy查询的其他操作

    sqlalchemy的数据查询排序

    1 .正序排序:session.query(model).order_by(model.attr).all() session.query(model).order_by("attr").all()

    2 .倒序排序:session.query(model).order_by(model.attr.desc()).all() session.query(model).order_by("-attr").all()

    3 .设置默认排序,在创建表的时候,定义一个类属性__mapper_args__ = {"order_by: attr"},后面查询不需要使用order_by,普通查询的对象即为排序好后的对象。

    4 .在relationship中设置排序方式relationship('model', backref=backref('attr', order_by=attr))

    limit、offset、切片

    1 . 获取限制的部分数据session.query(model).limit(10).all() 获取前10条数据
    2 . 获取固定偏移量的数据session.query(model).offset(10).limit(10).all() 从第10条数据开始,获取11-20条数据
    3 . 获取排序后的数据session.query(model).order_by(model.attr).offset(10).limit(10).all()
    4 . 切片session.query(model)[0:10] session.query(model).slice(0, 10).all()

    懒加载

    在一对多或者多对多的时候,如果想要获取多的这一部门的数据的时候,往往通过一个属性就可以全部获取了。比如有一个作者,想要获取这个作者的所有文章,name可以通过
    user.articles就可以获取所有的。但有时候我们不想获取所有的数据,不如只想要获取这个作者今天发表的文章,那么这个时候我们可以给relationship传递
    一个lazy='dunamic',以后通过user.articles获取到的就不是一个列表,而是一个appendquery对象了。这样就可以对这个对象再进行一次过滤和排序的等操作了。
    relationship('model', backref=backref('attr', lazy=''dynamic'))

  • 相关阅读:
    vmware虚拟机 安装
    js中设置元素class的三种方法小结
    HTML可编辑的select
    视图和表的区别和联系
    数据库之常用函数
    数据库之Group By用法
    数据库之存储过程
    数据库内外连接讲解
    ExtJs知识点概述
    SpringMVC 400 Bad Request 问题
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11577219.html
Copyright © 2011-2022 走看看