首頁  >  文章  >  資料庫  >  為什麼 MySQLdb 中的「SELECT ... WHERE ... IN ...」查詢失敗?

為什麼 MySQLdb 中的「SELECT ... WHERE ... IN ...」查詢失敗?

Barbara Streisand
Barbara Streisand原創
2024-11-01 17:32:02798瀏覽

Why is

使用MySQLdb 執行「SELECT ... WHERE ... IN ...」

儘管成功執行了SQL 查詢在MySQL 指令行中,您可能會遇到使用MySQLdb 在Python 中使用「WHERE ... IN ...」語法執行查詢的問題。讓我們調查問題並探索解決方案。

在您的情況下,您無法使用使用「IN」子句過濾「bar」列的查詢檢索行,而使用過濾「IN」子句的類似查詢則無法檢索行。 fooid」列與「IN」成功。這種不一致可以歸因於MySQLdb 處理參數化查詢的方式。

當您指定一個值數組作為MySQLdb 的參數時,它會自動將其轉換為帶有單引號的字串元組,從而導致語法不正確「IN」子句。 。 「IN」子句中的值:

或者,對於Python 2,您可以使用以下程式碼:

<code class="python">args=['A', 'C']
sql='SELECT fooid FROM foo WHERE bar IN (%s)' 
in_p=', '.join(list(map(lambda x: '%s', args)))
sql = sql % in_p
cursor.execute(sql, args)</code>
此程式碼透過以下方式動態產生具有正確數量的佔位符('%s') 的SQL 字串:迭代數組中的值並用逗號將它們連接起來。 ','C')

中的fooids

以上是為什麼 MySQLdb 中的「SELECT ... WHERE ... IN ...」查詢失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn