获取psycopg2 count(*)结果数

时间:2013-10-04 22:29:36

标签: python postgresql psycopg2

获取此查询返回的数字或方法的正确方法是什么?我特意想看看是否没有结果。

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}

感谢。

2 个答案:

答案 0 :(得分:22)

results本身就是一个行对象,在您的情况下(根据声明的print输出判断),一个字典(您可能配置了dict-like cursor subclass);只需访问count密钥:

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

因为您使用了.fetchone(),所以只返回一行,而不是行列表。

如果使用dict(-like)行游标,则行是元组,计数值是第一个值:

result = cur.fetchone()
print result[0]

答案 1 :(得分:0)

以下为我工作

cur.execute('select * from table where guid = %s;',[guid])
rows = cur.fetchall()
print 'ResultCount = %d' % len(rows)

<强>缺点: 如果您需要的全部是计数,这对DBMS来说效率不高。