web-dev-qa-db-ja.com

結果のpsycopg2 count(*)数を取得します

このクエリによって返される数または行を取得する正しい方法は何ですか?私は特に結果が返されないかどうかを調べています。

sql = 'SELECT count(*) from table WHERE guid = %s;'
data=[guid]
cur.execute(sql,data)
results = cur.fetchone()
for r in results:
  print type(r) # Returns as string {'count': 0L} Or {'count': 1L}

ありがとう。

16
Matt

resultsはそれ自体が行オブジェクトであり、あなたの場合(要求されたprint出力から判断)、辞書(おそらく dict-like cursor subclass ); countキーにアクセスするだけです。

_result = cur.fetchone()
print result['count']
_

.fetchone()を使用したため、行のリストではなく、1行のみが返されます。

Dict(-like)行カーソルを使用しているではない場合、行はタプルであり、カウント値は最初の値です。

_result = cur.fetchone()
print result[0]
_
29
Martijn Pieters