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 サイトの他の関連記事を参照してください。