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 のドキュメントから: The Query Object: as_scalar

as_scalar()

この Query によって表される完全な SELECT ステートメントを、スカラー サブクエリに変換して返します。

于 2012-12-27T15:29:46.117 に答える