我已经阅读了有关使用parametrized execute call为您执行所有SQL转义的建议,但这似乎仅在您事先知道列数时才有效。
我循环遍历CSV文件,每个表一个,并填充本地数据库以进行测试。每个表都有不同的列数,所以我不能简单地使用:
sql = "INSERT INTO TABLE_A VALUES (%s, %s)"
cursor.execute(sql, (val1, val2))
我可以非常灵活地将sql语句构建为字符串,但是这并没有让我使用cursor.execute的SQL转义工具,所以如果输入包含撇号或类似的,那么失败。
似乎应该有一种简单的方法来做到这一点。有吗?
答案 0 :(得分:2)
如果您知道参数的数量,可以创建一个参数列表:
count = ...
sql = "INSERT INTO ... VALUES(" + ",".join(count * ["?"]) + ")"
params = []
for i in ...:
params += ['whatever']
cursor.execute(sql, params)