2017-08-24 128 views
1

我試圖執行使用2種不同的方式MySQL查詢:光標不返回正確的結果

選項1:

bankd1= ("SELECT * FROM Bank_loan WHERE id in (%s)" % placeholders) 
cur.execute(bankd1) 

選項2:

bankd= "SELECT * FROM Bank_loan WHERE id in (%s)" 
cur.execute(bankd, placeholders) 

的選項1始終正常工作。但是在選項2的情況下,即使數據庫中存在記錄(如選項1所確認),它也有時無法顯示結果。

有什麼我在Python中缺少字符串替換或遊標如何處理參數?


更新:

在以下的情況下,選擇1件作品因爲對於ID的條目81220

選項1:

placeholders = '81220, 63266' 

選項2:

placeholders = '63266, 81220' 

Op重複2不起作用,因爲沒有63266的條目。Mysql只檢查字符串中的第一項。

如何提供元組而不是字符串?

使用第一個可用的選項(bankd1)很容易。但我想知道提供元組執行方法的正確方法。

回答

1

cur.execute將序列作爲其第二個參數;一個字符串將被視爲一個單字符字符串的序列。使用明確的元組:

cur.execute(bankd, (placeholders,)) 
+0

仍然是同樣的問題。更改爲元組沒有任何區別。行爲不一致。它正在爲某些ID工作。 – shantanuo