首页 >数据库 >mysql教程 >如何使用 MySQLdb 执行带有 IN 子句的 SELECT 查询?

如何使用 MySQLdb 执行带有 IN 子句的 SELECT 查询?

Barbara Streisand
Barbara Streisand原创
2024-10-31 00:53:03192浏览

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

使用 MySQLdb 执行“SELECT ... WHERE ... IN ...”

尝试使用以下命令执行 SELECT 查询时使用 MySQLdb 的 IN 子句时,用户可能会遇到这样的问题:尽管查询从 mysql 命令行按预期工作,但没有返回任何行。出现这种情况的原因可能是在 IN 值周围放置了不必要的引号。

要解决此问题,需要手动构造查询参数。在 Python 2 和 3 中,可以从 IN 值列表生成以逗号分隔的占位符字符串 (%s)。然后可以使用此字符串格式化查询并使用原始值列表执行。

对于 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn