ホームページ  >  記事  >  データベース  >  MySQLdb SELECT ... WHERE ... IN ... クエリが結果を返さないのはなぜですか?

MySQLdb SELECT ... WHERE ... IN ... クエリが結果を返さないのはなぜですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-01 13:06:30839ブラウズ

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

MySQLdb を使用した「SELECT ... WHERE ... IN ...」の実行

IN 句を含む SQL クエリを実行する場合MySQLdb を使用する場合、クエリ パラメータの構築方法に注意することが重要です。

問題

ユーザーが bar が含まれる fooid を選択しようとしたときに問題が発生しました ( '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>

以上がMySQLdb SELECT ... WHERE ... IN ... クエリが結果を返さないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。