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

Barbara Streisand
發布: 2024-11-01 17:32:02
原創
797 人瀏覽過

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!