2017-09-22 8 views
0

"id"列の個別値の数が各テーブルの行数と一致することを検証する簡単なテストを作成しています。私はオブジェクトの特定の値にアクセスできることを期待していますが、コードを実行して変数の値を印刷しようとすると、オブジェクトがsqlalchemy.engine.result.ResultProxyオブジェクトであることがわかります。人間が読むことができるものとは対照的です。私は1時間以上SQLAlchemyのウェブサイトにいて、私の質問のいくつかの順列を探そうとしているが、私が探しているものを見つけていない。Python/SQLAlchemy、クエリの結果へのアクセス方法

私のコードは、ターミナル出力で、以下の通りです:

from sqlalchemy import create_engine 
engine = create_engine('postgresql://[email protected]:5432/testload') 
connection = engine.connect() 
id_count = connection.execute('SELECT COUNT(DISTINCT(id)) FROM csv.agencies') 
id_count 
<sqlalchemy.engine.result.ResultProxy object at 0x10357d290> 
+0

REPL /インポートsqlachemyと実行を開いてください***ヘルプ(sqlalchemy.engine.result.ResultProxy)***がありますそこにはResultProxyの結果に関する多くの説明があります。 – Kyle

答えて

1

これはSQLAlchemyのの期待される動作です。 ResultProxyと対話する必要があります。 SQLAlchemyのdocumentationの通り:

返された結果は、DBAPIのカーソルを参照し、DBAPIカーソルのそれと大きく互換インタフェースを提供ResultProxyのインスタンスです。 DBAPIカーソルは、すべての結果行(ある場合)が使い果たされたときにResultProxyによって閉じられます。 UPDATEステートメント(行が返されない)のような行を返さないResultProxyは、構築の直後にカーソルリソースを解放します。

ResultProxy APIは、あなたがデータをフェッチすることができます:

results = connection.execute('SELECT COUNT(DISTINCT(id)) FROM csv.agencies') 
id_count = results.first()[0] 
+0

答えとリンクありがとう! –