Python 在SQLAlchemy中,如何返回ResultProxy而不是列表?
我在SQLAlchemy中有一个非常简单的查询,运行良好,类似于:Python 在SQLAlchemy中,如何返回ResultProxy而不是列表?,python,sqlalchemy,Python,Sqlalchemy,我在SQLAlchemy中有一个非常简单的查询,运行良好,类似于: query = session.query(MyModel) query = query.filter(MyModel.col1 == 'foo') # .. additional filters here... result = query.limit(50).all() 这将返回一个类型为list的结果——如何在不使用session.execute()的情况下返回ResultProxy对象?我正在使用query()方法来构
query = session.query(MyModel)
query = query.filter(MyModel.col1 == 'foo')
# .. additional filters here...
result = query.limit(50).all()
这将返回一个类型为list
的结果——如何在不使用session.execute()
的情况下返回ResultProxy
对象?我正在使用query()
方法来构造带有可选筛选参数的动态查询,但是ResultProxy
对象有一些我想使用的属性(例如rowcount
)
SQLAlchemy最令人困惑的一点可能是查询方法与其
execute
方法之间的差异。有人能用一个例子来澄清这一点吗?啊,这比我想象的要简单:只需使用session.execute(query)
:
为什么不能使用
len(result)
?我想要限制之前的行数,类似于SQL\u CALC\u FOUND\u rows
或SELECT FOUND\u rows()
将在MySQL中提供,但以一种与数据库无关的方式。。。但这带来了另一个问题,因为result\u proxy.rowcount
似乎在限制之前不知道结果集的大小。完成-必须等待2天才能接受自己的答案。
query = query.limit(50).offset(0)
result_proxy = session.execute(query)
print(result_proxy.rowcount)