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