[英]How do I insert variables in the UPDATE Statement sqlite3 with Python?
如果我想使用python在sqlite3中插入变量值,则可以编写以下语句。 例如:
import sqlite3
import random
conn = sqlite3.connect('testing.db')
c = conn.cursor()
c.execute("CREATE TABLE IF NOT EXISTS testing(Name TEXT, Telephone TEXT, ID REAL)")
var1 = input("Value:")
var2 = input("Value:")
var3 = random.randint(1,20)
c.execute("INSERT INTO testing VALUES(?, ?, ?)", (var1, var2, var3))
conn.commit()
conn.close()
如果我想对UPDATE语句执行相同操作,该怎么办。 我试过了,给我错误:
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()
这是我得到的错误:
sqlite3.OperationalError: near "?": syntax error
这实际上是一个常见问题,在更新查询中,您无法参数化列名 。 换一种说法:
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注入攻击 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.