2013-10-04 15 views
6

Cách chính xác để nhận được số hoặc hàng được trả về bởi truy vấn này? Tôi đặc biệt muốn xem liệu không có kết quả nào được trả về hay không.Nhận số lượng psycopg2 (*) số kết quả

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} 

Cảm ơn.

+0

count sẽ trả về chỉ 1 hàng (trong trường hợp này) –

+0

'type (r)' sẽ ** không ** trả về là '{'count': 0L}'. Nhiều khả năng nó sẽ in '' hoặc tương tự. –

+0

loại (r) trả về {'count': 0L} là trực tiếp từ bảng điều khiển. – Matt

Trả lời

12

results chính nó là đối tượng hàng, trong trường hợp của bạn (đánh giá bởi kết quả được xác nhận là print), từ điển (bạn có thể định cấu hình dict-like cursor subclass); chỉ đơn giản là truy cập vào count chính:

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

Bởi vì bạn sử dụng .fetchone() chỉ có một hàng được trả lại, không phải là một danh sách các hàng.

Nếu bạn là không sử dụng một dict (-like) con trỏ liên tiếp, hàng là các bộ và giá trị đếm là giá trị đầu tiên:

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

Cảm ơn bạn. Tôi đã nhìn chằm chằm vào điều này quá lâu và bị loại bỏ bởi type() trả về một chuỗi. Cảm ơn một lần nữa! – Matt

1

Sau đây làm việc cho tôi

cur.execute('select count(*) from table where guid = %s;',[guid]) 
rows = cur.fetchall() 
print 'ResultCount = %d' % len(rows) 
Các vấn đề liên quan