為什麼我的 MySQLdb SELECT ... WHERE ... IN ... 查詢不回傳結果?

Susan Sarandon
發布: 2024-11-01 13:06:30
原創
838 人瀏覽過

Why Doesn't My MySQLdb SELECT ... WHERE ... IN ... Query Return Results?

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

使用IN 子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢時使用子句執行SQL 查詢MySQLdb,請務必注意查詢參數的建構方式。

問題

使用者在嘗試選擇 bar 所在的 fooids 時遇到問題 ( 'A','C') 使用 Python 和 MySQLdb。儘管在 mysql 命令列中執行相同的查詢,但它在 Python 中沒有傳回任何行。

根本原因

出現問題是因為MySQLdb 轉換了參數化參數[' A','C'] 到("'A'","'C '"),這導致IN 子句中的值周圍有太多引號。

要正確執行查詢,必須手動建構查詢參數。以下 Python 程式碼示範如何達成此目的:

Python 3:

<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>
登入後複製

Python 2:

<code class="python">args = ['A', 'C']
sql = 'SELECT fooid FROM foo WHERE bar IN (%s)'
in_p = ', '.join(map(lambda x: '%s', args))
sql = sql % in_p
cursor.execute(sql, args)</code>
登入後複製
Python 2:

以上是為什麼我的 MySQLdb SELECT ... WHERE ... IN ... 查詢不回傳結果?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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