【问题标题】:sql alchemy scalar query issue?sqlalchemy 标量查询问题?
【发布时间】:2012-12-27 23:29:46
【问题描述】:
这个查询有什么问题。
self.connection.execute(select([func.count(table.c.id)]).as_scalar())
这给我这个回溯
StatementError: Not an executable clause (original cause: ArgumentError:
Not an executable clause) '(SELECT count(table.id) AS count_1 \nFROM agent)'
或者如何使用 SqlAlchemy Core
获取表中所有行的数量
【问题讨论】:
标签:
python
orm
sqlalchemy
【解决方案1】:
不确定为什么需要使用 .as_scalar() 方法。此方法旨在用于创建子查询对象。而子查询对象是用来构建另一个查询的,不能直接执行。
从您的代码看来,您正在构建要执行的选择查询:
在这种情况下,以下代码就足够了:
self.connection.execute(select([func.count(table.c.id)]))
以下代码正常工作:
r = engine.execute(select([func.count(table.c.id)]))
print r
for i in r:
print i
结果:
<sqlalchemy.engine.base.ResultProxy object at 0x032F4E30>
(1,)
PS:
从 sqlalchemy 文档中:
The Query Object: as_scalar
as_scalar()
返回由 this 表示的完整 SELECT 语句
查询,转换为标量子查询。