ホームページ >データベース >mysql チュートリアル >MySQLdb を使用して IN 句を含む SELECT クエリを実行するにはどうすればよいですか?

MySQLdb を使用して IN 句を含む SELECT クエリを実行するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-10-31 00:53:03191ブラウズ

How to Execute a SELECT Query with an IN Clause Using MySQLdb?

MySQLdb を使用して "SELECT ... WHERE ... IN ..." を実行

MySQLdb を使用する IN 句では、クエリが mysql コマンドラインから期待どおりに機能するにもかかわらず、行が返されないという問題が発生する可能性があります。これは、IN 値の周囲に不要な引用符が配置されているために発生する可能性があります。

この問題を解決するには、クエリ パラメーターを手動で構築する必要があります。 Python 2 と Python 3 の両方で、プレースホルダー (%s) のカンマ区切り文字列を IN 値のリストから生成できます。この文字列を使用してクエリをフォーマットし、元の値のリストで実行できます。

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>

このアプローチに従うことで、SQL クエリは目的の IN 値で正しくフォーマットされ、以前に行が返されなかった問題が解決されます。

以上がMySQLdb を使用して IN 句を含む SELECT クエリを実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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