+ 我要发布
我发布的 我的标签 发现
浏览器扩展
斑点象@Edge

Python 项目中,使用 SQLAlchemy 时如何对数据进行求和?

直接使用 SQLAlchemy 的 scalar() 就可以进行求和计算了。 session.query(func.sum(Money.amount)).filter(.....).scalar() 在介绍下查询对象时常用到的其他几种方法,包括 .one(),.all(),.scalar(),.one_or_none(),.get(),.first()等。 ▶ .one() 如果只能查询到一个结果,返回它,否则抛出异常。 没有结果时抛sqlalchemy.orm.exc.NoResultFound,有超过一个结果时抛sqlalchemy.orm.exc.MultipleResultsFound。 ▶ .all() 返回查询到的所有的结果。 这个方法比较危险的地方是,如果数据量大且没有使用limit子句限制的话,所有的结果都会加载到内存中。 它返回的是一个列表,如果查询不到任何结果,返回的是空列表。 ▶ .first() 返回查询到的第一个结果,如果没有查询到结果,返回None。 ▶ .scalar() 这个方法与.one_or_none()的效果一样。 如果查询到很多结果,抛出sqlalchemy.orm.exc.MultipleResultsFound异常。 如果只有一个结果,返回它,没有结果返回None。 ▶ .one_or_none() 比起.one()来,区别只是查询不到任何结果时不再抛出异常而是返回None。 ▶ .get() 这是个比较特殊的方法。它用于根据主键来返回查询结果,因此它有个参数就是要查询的对象的主键。 如果没有该主键的结果返回None,否则返回这个结果。
我的笔记