后台-插件-广告管理-内容页广告位一(手机)

您现在的位置是:首页 > 开发类 > 数据库数据库

python拼接mysql语法时in的问题

2021-04-18 18:35:54数据库人已围观

简介mysql的in语句后面的值类似python的元祖,正常情况下直接传元祖进入也可以。
比如我们有一个元祖:tmp_tup = ("xiaoming", "xiaohua")
格式化字符串 sql = f"select * from tb

mysql的in语句后面的值类似python的元祖,正常情况下直接传元祖进入也可以。

比如我们有一个元祖:tmp_tup = ("xiaoming", "xiaohua")

格式化字符串 sql = f"select * from tb where name in {tmp_tup}" 这样是没有问题的。

但是如果元祖只有一个元素时,python默认生成的元祖是这样的 tmp_tup = ("xiaoming", ) ,最终生成的sql :"select * from tb where name in ("xiaoming", )" 这样就会报语法错误,因为后面多了一个逗号。

可以利用join做如下修改。

tmp_tup_str = "','".join(tmp_tup)

格式化字符串 sql = f"select * from tb where name in ('{tmp_tup_str}')"

这样就可以了,需要注意两个地方。

1. join拼接的时候,一定是用 ',' 号分隔,不是用一个 , 号

2. 格式化sql的时候,要在tmp_tup_str变量前后加 ' ' , 因为tmp_tup_str分隔出来长这样:xiaoming", "xiaohua 所以前后加上''就是sql标准语法了: "xiaoming", "xiaohua"

上面是我测试无误的方法,欢迎大佬门指正修改,比如会不会出现sql注入的情况,如此做。其他一切正常。

文章来源:查看

Tags:拼接   语法   python   mysql

很赞哦! ()

后台-插件-广告管理-内容页广告位二(手机)

相关文章

后台-插件-广告管理-内容页广告位三(手机)

随机图文

后台-插件-广告管理-内容页广告位四(手机)

文章评论

留言与评论(共有 0 条评论)
   
验证码:

本栏推荐

站点信息

  • 文章统计13614篇文章
  • 浏览统计468次浏览
  • 评论统计1个评论
  • 标签管理标签云
  • 统计数据:统计代码
  • 微信公众号:扫描二维码,关注我们