python拼接 select in语句

拼接sql语句时,有时候参数是一个列表,想实现select in语句的效果,比如sql语句:select * from user where userid in ('A', 'C'),但是只有列表参数args=['A', 'C'],首先尝试了如下方式:

"select * from user where userid in (%s)"  % (','.join(args))

发现会报错"Unknown column 'A' in 'where clause'',原因是拼接出来的没有带引号。最后拼成了

select * from user where userid in (A, C)

最后解决方案是:

Python 3:

args=['A', 'C']
sql='SELECT fooid FROM foo WHERE bar IN (%s)'
 in_p=', '.join(list(map(lambda x: "'%s'" % x, args)))
sql = sql % in_p
cursor.execute(sql, args)

Python 2:

args=['A', 'C']
sql='SELECT fooid FROM foo WHERE bar IN (%s)' 
in_p=', '.join(map(lambda x: "'%s'" % x, args))
sql = sql % in_p
cursor.execute(sql, args)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容