可变长度行的 SQLite 执行语句

SQLite execute statement for variable-length rows

我在这里阅读了有关使用 parametrized execute call 为您完成所有 SQL 转义的建议,但这似乎只有在您提前知道列数时才有效。

我正在遍历 CSV 文件,每个文件一个 table,并填充本地数据库以进行测试。每个 table 都有不同的列数,所以我不能简单地使用:

sql = "INSERT INTO TABLE_A VALUES (%s, %s)"
cursor.execute(sql, (val1, val2))

我可以非常灵活地将 sql 语句构建为字符串,但这并没有让我使用 cursor.execute 的 SQL-转义工具,所以如果输入包含撇号或类似字符,失败。

看来应该有一个简单的方法来做到这一点。有吗?

如果您知道参数的数量,则可以创建它们的列表:

count = ...
sql = "INSERT INTO ... VALUES(" + ",".join(count * ["?"]) + ")"
params = []
for i in ...:
    params += ['whatever']
cursor.execute(sql, params)