1

这个查询有什么问题。

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获取表中所有行的数量

4

1 回答 1

3

不确定为什么需要使用 .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 文档: 查询对象:as_scalar

as_scalar()

返回此查询表示的完整 SELECT 语句,转换为标量子查询。

于 2012-12-27T15:29:46.117 回答