我正在用python构建一个查询来传递给pymysql查询。
condition=['m'] query = "select * from table where condition in {}'.format(tuple(condition))
我一直坚持的一点是,我想设置一个脚本,使其既适用于 condition
可以是单个项目,也可以有多个项目。
在我看来,将列表转换为元组是可行的,但事实并非如此,因为: tuple(condition)
退货: ('m',)
,在我的mysql服务器上无法工作。
最简单的设置方法是什么?我可以将单个值或多个值发送到 where
在python中生成查询的子句?
5条答案
按热度按时间wdebmtf21#
使用多个条件的最简单方法是为单个“where”设置一个格式字符串:
再加上一些东西:
并根据需要连接它们。
对于元组,可以像使用列表一样对其中的项进行寻址:
ttp71kqs2#
所以我选择了另一条路线,因为这些建议要么太麻烦,要么不起作用。
对我有效的解决方案是:
cond = ', '.join('"{0}"'.format(w) for w in condition)
然后查询是:select * from table where condition in ({})
.格式(cond)`这将生成一个由逗号分隔的值组成的字符串,每个值都用引号括起来。例子:
mhd8tkvw3#
您可能必须将其作为字符串传递,然后让您的sql server完成其余的工作。你试过:
blmhpbnm4#
我能想到的另一个方法是替换查询的最后一部分。
问题通常发生在只有一个元素的情况下,也就是说,它会像这样在末尾加一个不必要的逗号
('m',)
为什么不这样做:因此,您的查询将如下所示:
如果您必须将多个值传递到where条件,则该值仍然有效:
输出:
e37o9pze5#
我相信这会解决你的问题:
我还补充了
quoteWrap
显然,函数的作用是将字符串用引号括起来。