【发布时间】:2021-08-27 17:02:49
【问题描述】:
我在看这个类似的问题:Parameterize an SQL IN clause
但是解决方案不是使用 Python,所以我不得不提出一个新问题:
如何参数化包含 IN 子句的查询,字符串 'ruby','rails','scruffy','rubyonrails' 来自数据框的列
SELECT * FROM Tags
WHERE Name IN ('ruby','rails','scruffy','rubyonrails')
ORDER BY Count DESC
数据框df 可能如下所示:
column1 column2...
ruby .
rails .
scruffy .
xxx
xxxx
这是我尝试过的:
我将第一列转换为列表并将其命名为list,然后更新查询中的第二行:
WHERE Name IN %(list)s
但这给了我一个错误:sqlalchemy.exc.ProgrammingError: (MySQLdb._exceptions.ProgrammingError) (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where Name IN (('ruby','rails','xxx','xxxx','xxx','' at line 2")
我也尝试list = str(list)[1:-1] 删除方括号,但随后出现错误:MySQLdb._exceptions.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'where Name IN ('\\'ruby\\', \\'rails\\', \\'xxxxx\\', \\'xxx\\',' at line 2")
我的问题是我应该为df[column1] 使用什么格式/数据类型才能使其正常工作?有人可以帮忙吗?谢谢。
【问题讨论】:
-
更新:我已经解决了这个问题,原来我只需要将它转换为列表(带方括号),不需要删除括号否则它将不起作用!