我正在尝试用参数替换我的一些字符串插入。 所以我有执行查询的代码:
cursor.execute("DELETE FROM %s WHERE COL=%s" % ("tablename","column"))
我可以把它换成
cursor.execute("DELETE FROM tablename WHERE COL=?" , ("column"))
但我希望我的表名在一个变量中。如何保护表变量的插入免受 sql 注入(inject)?
最佳答案
如果您的目标是确保变量是有效表的名称,您可以使用以下命令获取表名列表
SELECT name FROM sqlite_master WHERE type='table'
然后检查配置文件中的变量是否与其中一个表匹配。这避免了必须对表格列表进行硬编码。
关于python - SQLite 表名参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31656232/