今天再工作中需要用到拼接一个原生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
来查询,但是假如这个字段包含了索引
,就会影响查询速率
。
网友评论