使用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中文網其他相關文章!