最新下载
热门教程
- 1
 - 2
 - 3
 - 4
 - 5
 - 6
 - 7
 - 8
 - 9
 - 10
 
SQL WHERE IN参数化编译写法简单示例
时间:2022-06-29 09:02:41 编辑:袖梨 来源:一聚教程网
本篇文章小编给大家分享一下SQL WHERE IN参数化编译写法简单示例,小编觉得挺不错的,现在分享给大家供大家参考,有需要的小伙伴们可以来看看。
例子
业务需求,需要通过SQL语句从asset资产表中查询域名字段在(“thief.one”,”nmask.cn”,”sec.thief.one”)范围内的数据库记录,SQL语句该怎么写呢?
拼接法(错误)
values = "'thief.one','nmask.cn','sec.thief.one'"
sql = "select * from asset where domain in ("+values+")"
print sql
说明:通过将搜索条件以字符串拼接的方式构造sql语句,语法上可通过,但存在着安全隐患(参照sql注入漏洞)
参数化1(错误)
values = (("thief.one","nmask.cn","sec.thief.one"),)
sql = "select * from asset where domain in %s"
print sql
print values
说明:通过参数化方式,将where in 后面的查询内容传入。表面上看没问题,但在编译过程中,会将(“thief.one”,”nmask.cn”,”sec.thief.one”)整体看成一个字符串,而作为查询条件,与需求不符合。
参数化2(正确)
values = ("thief.one","nmask.cn","sec.thief.one")
sql = "select * from asset where domain in ({})".format(",".join(['%s' for i in values]))
print sql
print values
说明:通过计算values里面字符串个数,动态构造编译的参数。
相关文章
- 洛克王国世界初始精灵哪个好-精灵御三家选择推荐 11-04
 - 逃离鸭科夫农场镇专家快递员1任务怎么做 专家快递员1任务流程 11-04
 - 逃离鸭科夫四骑士打法攻略 四骑士打法攻略(二) 11-04
 - 逃离鸭科夫农场镇晋升专家快递员怎么做 晋升专家快递员任务流程 11-04
 - 逃离鸭科夫农场镇进阶实力证明2怎么做 实力证明2任务流程 11-04
 - 逃离鸭科夫农场镇清理校园任务怎么完成 清理校园任务流程 11-04