首页  >  文章  >  数据库  >  为什么我的 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 所在的 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>

以上是为什么我的 MySQLdb SELECT ... WHERE ... IN ... 查询不返回结果?的详细内容。更多信息请关注PHP中文网其他相关文章!

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