【发布时间】:2015-06-01 09:09:10
【问题描述】:
我在这里阅读了有关使用parametrized execute call 为您执行所有 SQL 转义的建议,但这似乎只有在您提前知道列数时才有效。
我正在循环遍历 CSV 文件,每个表一个,并填充本地数据库以进行测试。每个表都有不同的列数,所以我不能简单地使用:
sql = "INSERT INTO TABLE_A VALUES (%s, %s)"
cursor.execute(sql, (val1, val2))
我可以非常灵活地将 sql 语句构建为字符串,但这并没有让我使用 cursor.execute 的 SQL 转义工具,因此如果输入包含撇号或类似内容,它将失败。
似乎应该有一个简单的方法来做到这一点。有吗?
【问题讨论】:
-
你能提供一个转义对你不起作用的例子吗?
-
另一种方法是escape 源(CSV 文件)本身的撇号,方法是将所有单撇号替换为双撇号。这只是节省您时间的一种解决方法。
标签: python sql sqlite python-3.x escaping