2013-12-08 26 views
1

我在擺弄Python和SQLite。我有一個表如此構建:python 2.7 sqlite3遊標只返回一個結果

PID | CID | a | b 
================= 
1 | 1 | ... 
1 | 2 | ... 
2 | 1 | ... 
2 | 2 | ... 

其中PID是一個對象的ID,而CID是另一個對象的ID。基本上,一個表格會跟蹤這兩個對象與屬性(a,b等等)之間的關係,這些屬性可能會覆蓋這些對象的關係。

當我在Python執行以下語句(c是一個sqlite3的光標):

results = c.execute("SELECT cid FROM test WHERE pid=?", (the_related_id,)).fetchmany()

我只在列表中得到一個結果,但是,當我運行在同一個查詢(?)一個SQLite瀏覽器,我得到了許多預期的結果: SELECT cid FROM test WHERE pid=1

這是怎麼回事?

+1

'fetchmany'回報同時* N *多行,並且可以多次調用。使用'fetchall'來代替。 –

+0

@JonClements請做出答案。 –

回答

1

通過size參數指定要調用的每次調用的行數。如果沒有給出,遊標的數組大小決定了要獲取的行數。

results = c.execute("SELECT cid FROM test WHERE pid=?", (the_related_id,)).fetchmany(N) 

將返回N行。 如果要檢索的所有行,使用使用fetchall()函數來代替:

results = c.execute("SELECT cid FROM test WHERE pid=?", (the_related_id,)).fetchall() 
+0

這樣做。謝謝!我完全忘了'fetchall()'! – nlowe