zoukankan      html  css  js  c++  java
  • SQLAlchemy的查询操作Query

    查询操作

    查询子句使用session.query()方法来获取Query查询对象。查询对象能够使用一些方法来对应一些查询子句,比如.order_by().limit().filter()等。

    查询对象有这么几种方法.one().all().scalar().one_or_none().get(),以及.first()等。
    下面对这几个方法的用法及效果做简单解释。

    • all() 返回查询到的所有的结果。这个方法比较危险的地方是,如果数据量大且没有使用limit子句限制的话,所有的结果都会加载到内存中。它返回的是一个列表,如果查询不到任何结果,返回的是空列表。
    • first() 返回查询到的第一个结果,如果没有查询到结果,返回None
    • .scalar() 这个方法与.one_or_none()的效果一样。 如果查询到很多结果,抛出sqlalchemy.orm.exc.MultipleResultsFound异常。如果只有一个结果,返回它,没有结果返回None
    • one() 如果只能查询到一个结果,返回它,否则抛出异常。没有结果时抛sqlalchemy.orm.exc.NoResultFound,有超过一个结果时抛sqlalchemy.orm.exc.MultipleResultsFound
    • one_or_none()比起one()来,区别只是查询不到任何结果时不再抛出异常而是返回None
    • get()这是个比较特殊的方法。它用于根据主键来返回查询结果,因此它有个参数就是要查询的对象的主键。如果没有该主键的结果返回None,否则返回这个结果。
    # 查询所有的User对象
    session.query(User).all()
    # 查询按照主键升序排序后的第一个User对象
    session.query(User).order_by(User.id.asc()).first()
    # 查询指定user_id为主键的对象
    session.query(User).get(user_id)
    session.query(User).filter(User.id == user_id).scalar()
    session.query(User).filter(User.id == user_id).one_or_none()
    session.query(User).filter(User.id == user_id).one()    # 如果查询不到会抛出异常,前面三个查询不到只是返回None

    参考:

    1、http://jzqt.github.io/2015/12/29/SQLAlchemy笔记/

  • 相关阅读:
    将地址转换为链接的正则表达式(regex url href)
    [收藏]中国惠普前总裁孙振耀谈人生
    沪江技术团队寻觅新成员,下一位会是你吗?
    来点圣诞气氛
    让VisualSVN Server支持匿名访问
    11月25日博客园南京园友聚会
    [上海俱乐部活动]博文视点与博客园系列图书作者见面会暨.NET技术交流会
    比尔·盖茨在微软的最后一天
    真让人兴奋
    博客园新服务器已下订单
  • 原文地址:https://www.cnblogs.com/shengulong/p/7872181.html
Copyright © 2011-2022 走看看