如果我想用python在sqlite3中插入变量值,则编写以下语句。例如:
column = input("Column to update:")
update_user = input("Value to update:")
field_name = input("Where field name equal to:")
value = input("Value")
c.execute("UPDATE testing SET ? = ? WHERE ? = ?", (column, update_user, field_name, value))
conn.commit()
如果我想对 UPDATE 语句执行相同操作该怎么办?我试过这个并且给了我错误:
sqlite3.OperationalError: near "?": syntax error
这是我得到的错误:
{{1}}
答案 0 :(得分:3)
这实际上是一个常见问题,在您的更新查询中,无法参数化列名。换句话说:
UPDATE testing SET ? = ? WHERE ? = ?
THIS^ THIS^
不能是查询占位符,您必须以通常的方式插入它们 - 通过字符串格式化:
c.execute("""
UPDATE
testing
SET
{0} = ?
WHERE
{1} = ?""".format(column, field_name), (update_user, value))
但是,您应该注意正确清理,验证column
和field_name
值以防止SQL injection attacks。