2012-04-30 34 views
1

地獄傢伙剛跳下去蟒蛇,我有一個很難搞清楚了這一點我可以存儲一個cursor.fetchone()在一個變量

我有2個查詢。 。 query1query2現在,我怎麼告訴
row = cursor.fetchone()那我指的query1,而不是query2

cursor = conn.cursor() 
query1 = cursor.execute("select * FROM spam") 
query2 = cursor.execute("select * FROM eggs") 
row = cursor.fetchone() 

謝謝你們

回答

3

一旦執行第二個查詢,從第一個結果都沒有了。 (中execute返回值是沒有用的。)的正確方法有兩個查詢工作,同時是有兩個光標:

cursor1 = conn.cursor() 
cursor2 = conn.cursor() 
cursor1.execute("select * FROM spam") 
cursor2.execute("select * FROM eggs") 
cursor1.fetchone() #first result from query 1 
cursor2.fetchone() #first result from query 2 
1

事實並非如此。 cursor.execute的返回值沒有意義。每PEP 249

.execute(operation[,parameters]) 

     Prepare and execute a database operation (query or 
     command)... 

     [...] 

     Return values are not defined. 
+0

大疑問你怎麼辦呢?你的方式?? – tomexsans

+0

對不起,離開了。如果您需要一次運行多個查詢,則需要爲每個查詢創建一個單獨的光標。 – duskwuff

1

你不能這樣做,你試圖。做這樣的事情,而不是:

cursor = conn.cursor() 
cursor.execute("select * FROM spam") 
results1 = cursor.fetchall() 
cursor.execute("select * FROM eggs") 

if results1 is not None and len(results1) > 0: 
    print "First row from query1: ", results1[0] 

row = cursor.fetchone() 
if row is not None: 
    print "First row from query2: ", row 
+0

是的謝謝你,但是,只有當你的查詢很少,如果你有大量的查詢來區分?我正在考慮面向對象的方法。 – tomexsans

相關問題