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'))

  • 相关阅读:
    python多线程编程(6): 队列同步
    Python验证Url地址的正则表达式
    centos下redis安全配置相关
    redis
    mysql安装 配置
    centos7安装python3 环境变量配置 django安装 以及tab补全功能
    saltstack 与常用服务部署
    vim
    Linux系统基础优化及常用命令
    Shell 基本命令
  • 原文地址:https://www.cnblogs.com/ivy-blogs/p/11577219.html
Copyright © 2011-2022 走看看