Flask 如何在Alchemy中使用子查询?

Flask 如何在Alchemy中使用子查询?,flask,sqlalchemy,subquery,flask-sqlalchemy,Flask,Sqlalchemy,Subquery,Flask Sqlalchemy,帮助将两个查询组合在一起。 另外,由于db.Query而不是db.session.Query,我遇到了问题。我想使用db.Query,因为它有paginate:) 谢谢。我也有同样的问题 我解决这个问题的方法是直接使用db.session.query,并创建flask\u sqlalchemy.Pagination的新子类。该子类包含一个方法,允许我从任何查询创建分页对象 从烧瓶导入中止 从flask_sqlalchemy导入分页为_分页 类分页(_分页): “”“扩展分页类,让我们从任何Ba

帮助将两个查询组合在一起。

另外,由于db.Query而不是db.session.Query,我遇到了问题。我想使用db.Query,因为它有paginate:)


谢谢。

我也有同样的问题

我解决这个问题的方法是直接使用
db.session.query
,并创建
flask\u sqlalchemy.Pagination
的新子类。该子类包含一个方法,允许我从任何查询创建
分页
对象

从烧瓶导入中止
从flask_sqlalchemy导入分页为_分页
类分页(_分页):
“”“扩展分页类,让我们从任何BaseQuery构造它。”“”
@类方法
来自查询的定义(cls,查询,页面,每页,错误输出=真):
“”“返回第`页'中的`每页'项目。默认情况下,它将
如果未找到任何项目且页面大于,则使用404中止
1.可以通过将“error\u out”设置为“False”来禁用此行为。
这基本上是flask_sqlalchemy.Query.paginate()的副本
返回一个:class:`Pagination`对象。
"""
如果出现错误且页面<1:
中止(404)
items=query.limit(每页)。offset((第-1页)*每页)。all()
如果不是项目和页面!=1和错误_out:
中止(404)
#如果我们在第一页,而且数量更少,就不需要计算了
#比我们预期的要好。
如果页面==1且每个页面的长度(项目)<:
总计=长度(项目)
其他:
总计=query.order\u by(无).count()
返回cls(查询、页面、每页、总计、项目)
现在根据以下代码段将其用于:

AttributeError: Neither ‘count’ object nor ‘Comparator’ object has an attribute ‘_autoflush’

首先,问题是从
db.Query
创建
Pagination
-对象的主要逻辑不是Pagination类的一部分,而是在
db.Query.paginate()中实现的,真正的目的是什么?我编辑了标题来表达我认为问题是:“如何将子查询与Flask SqlAlchemy结合使用?”对不起。主要问题与子查询无关。它与分页器有关。如果使用paginator方法运行子查询。你会解决这个问题的。谢谢。@viktor.likin:关键是这完全行不通。因为flask sqlalchemy中的db.Query似乎无法与子查询一起使用,并且db.session.Query(来自sqlalchemy)没有paginate()方法。您似乎需要获取对flask项目的pull请求。是的,我想我会尽快创建一个拉取请求。在上已经有一个拉取请求
I receive such errors:
InvalidRequestError: SQL expression, column, or mapped entity expected - got '[<sqlalchemy.orm.attributes.InstrumentedAttribute object at 0x7f2e28e1b810>, <sqlalchemy.sql.functions.count at 0x7f2e236c3ed0; count>]'
AttributeError: Neither ‘count’ object nor ‘Comparator’ object has an attribute ‘_autoflush’
query = db.session.query(…)
pagination = Pagination.from_query(query, page, 20)