直接通过python的连接字符串生成查询语句,有可能会有sql注入的危险。如果,只生成单条查询,注意点的话,连接字符串组合成查询语句,危险性大不大?好像应该也没什么问题如果使用“?”占位符的话,感觉很不灵活不方便。比如,多个keyselect*fromtableselectid,namefromtable这里使用占位符,貌似不能这么用。args=('name','xxx')c.execute('select*fromstockswhere?=?',args)还有生成查询语句比较好的实践应该是怎样的?(字符串连接成查询语句,要带入的查询的值使用占位符??还是直接固定死了,尽量不要抽象话)
2 回答
富国沪深
TA贡献1790条经验 获得超9个赞
占位符的确不能对字段名使用,只能对值使用,但是你完全可以构建一个属于自己的这样子的函数。python没写过,就用php来回答了,思路是一样的,应该能看懂吧。。。$arr=['name1','value1','name2','value2'];echoimplode_where($arr);functionimplode_where($conditions){$where=[];$i=0;do{$column=$conditions[$i];$value=$conditions[$i+1];//此处可以视情况作一些过滤,比如把'转义为\'$where[]="`{$column}`='{$value}'";//将$conditions中每两个元素为一组组合起来}while($ireturnjoin(',',$where);//然后用逗号把他们都拼起来 }嗯,要注意的一点是上面这个函数并不是十分严谨,比如没有判断传入参数为空,或者条件个数是奇数个的情况,主要只是提供一个思路啦~
添加回答
举报
0/150
提交
取消