mysql如何使用in查询动态拼接参数

2018-11-22  本文已影响0人  wowshiwoniu

今天再工作中需要用到拼接一个原生sql,里面有用到select * from t_order where order_no in ("xx", "xx", "xx"...) 形式的sql语句,order_no是不确定的,如何匹配拼接处期望的sql?参考地址

通过传参执行
format_strings = ",".join(['%s'] * len(order_no_list))
cursor.execute("select * from t_order where order_no in (%s)" % format_strings, tuple(order_no_list))
直接拼sql语句执行
format_strings = ",".join(["'%s'"] * len(order_no_list)) % tuple(order_no_list)
cursor.execute("select * from t_order where order_no in (%s)" % format_strings)

python中执行sql特别需要注意 %s 匹配这个问题,如果 "%s" 没有带引号,就会默认为 int 来处理,对于字段并非纯数字的,会报类型异常错误,然而对于字段为纯数字的,虽然本质是字符串,但是数据库也支持自动按照int来查询,但是假如这个字段包含了索引,就会影响查询速率

上一篇 下一篇

猜你喜欢

热点阅读