2014-09-04 88 views
2

我想從這句話中返回的數值。的Python SQLite的返回值

c = db.execute("""SELECT *, rowid FROM members WHERE barcode = '%s' AND debit > 0 LIMIT 50""" % (s,)) 

但我得到這個作爲返回值:

sqlite3.Cursor object at 0xb6cb2720 

我應該怎麼做這個光標對象獲得結果?

+0

您是否嘗試過列舉'c'? '用於在c中行:...' – cdhowie 2014-09-04 00:26:32

+2

'要在執行SELECT語句後檢索數據,可以將遊標作爲迭代器,調用遊標的fetchone()方法檢索單個匹配行,或者調用fetchall()以獲得匹配行的列表。' – roippi 2014-09-04 00:27:11

回答

2

試試這個:

for row in c: 
    print row['rowid'] 
+0

直接枚舉'c'而不是'c.fetchall()'將需要更少的內存,因爲整個結果集不會一次加載到內存中,而是每一行都會加載一次一個,然後在下一個之前丟棄。 – cdhowie 2014-09-04 00:33:22

+0

已更新。謝謝你的提示。這就是爲什麼我喜歡回答關於SO的問題。我的思維方式得到驗證或者無論如何,我學到了一些東西。 – chishaku 2014-09-04 00:37:15

+0

@cdhowie實際上,SQLite不一定會返回整個結果集,但它肯定會在從磁盤上的事務日誌中返回下一個集合之前緩存一些內存(除非它是一個in-mem數據庫)......但是,當然更多比'list''ing或'.fetchall''結果更有效率。 – 2014-09-04 00:43:09

0

我的一個問題是,我使用了錯誤的SQL查詢來獲取我想要的數據。請參閱:

c = db.execute("""SELECT "debit" FROM "members" WHERE "barcode" = '%s' LIMIT 1""" % (s,)) 

然後,我會得到響應:

(0,) 

這是我需要的。現在要真正弄清楚如何比較它 - 我需要說「如果c不等於(0),然後打印'十字'或者打印'打勾'...」

非常感謝您的幫助!