数据库查询语句的生成,以及占位符使用的疑问


直接通过 python的连接字符串生成查询语句,有可能会有sql注入的危险。

如果,只生成单条查询,注意点的话,连接字符串组合成查询语句,危险性大不大?好像应该也没什么问题

如果使用 “?”占位符的话,感觉很不灵活不方便。

比如,多个key
select * from table
select id,name from table

这里使用占位符,貌似不能这么用。


 args= ('name','xxx')
c.execute('select * from stocks where ?=?', args)

还有生成查询语句比较好的实践应该是怎样的?

(字符串连接成查询语句,要带入的查询的值使用占位符??还是直接固定死了,尽量不要抽象话)

python 数据库 sqlite

t.akiha 10 years, 7 months ago

占位符只能在 VALUE 上使用 ... 表名和字段名都不能使用占位符 ...

换言之 ... 占位符必须不能影响 SQL 语句的构造 ...

阿露库埃德 answered 10 years, 7 months ago

Your Answer