Python数据库语句查询生成与占位符使用技巧的不解之处,python使用技巧,直接通过 python的
Python数据库语句查询生成与占位符使用技巧的不解之处,python使用技巧,直接通过 python的
直接通过 python的连接字符串生成查询语句,有可能会有sql注入的危险。
如果,只生成单条查询,注意点的话,连接字符串组合成查询语句,危险性大不大?好像应该也没什么问题
如果使用 “?”占位符的话,感觉很不灵活不方便。
比如,多个key
select * from table
select id,name from table
这里使用占位符,貌似不能这么用。
args= ('name','xxx')c.execute('select * from stocks where ?=?', args)
还有生成查询语句比较好的实践应该是怎样的?
(字符串连接成查询语句,要带入的查询的值使用占位符??还是直接固定死了,尽量不要抽象话)
占位符的确不能对字段名使用,只能对值使用,但是你完全可以构建一个属于自己的这样子的函数。python没写过,就用php来回答了,思路是一样的,应该能看懂吧。。。
<?php$arr = ['name1', 'value1', 'name2', 'value2'];echo implode_where($arr);function implode_where($conditions) { $where = []; $i = 0; do{ $column = $conditions[$i]; $value = $conditions[$i+1]; //此处可以视情况作一些过滤,比如把'转义为\' $where[] = "`{$column}`='{$value}'"; //将$conditions中每两个元素为一组组合起来 }while($i < count($conditions)); return join(',', $where); //然后用逗号把他们都拼起来}
嗯,要注意的一点是上面这个函数并不是十分严谨,比如没有判断传入参数为空,或者条件个数是奇数个的情况,主要只是提供一个思路啦~
占位符只能在 VALUE 上使用 ... 表名和字段名都不能使用占位符 ...
换言之 ... 占位符必须不能影响 SQL 语句的构造 ...
编橙之家文章,
相关内容
- Java程序调用python脚本,脚本日志如何输入到日志文件中
- Python正则表达生成器问题,python表达生成器,为什么/s
- Jinja2可以把None值显示为空字符串吗?,jinja2none,如果在
- Python 修改裁剪图片尺寸形状用什么方法,,如题,我修
- Python django + gevent应用是否要保证C++代码线程安全问题,
- python类成员函数参数类型的问题,python成员函数参数
- Python字符串切片问题求助,,关于Python的字符串
- python类对象 赋值后的分别变化,及删除后为什么还有,
- 有没有快一点的Python扫描发包方法,原来的速度好慢,
- Python type(type)得到结果为<type 'type'>如何理解
评论关闭