【发布时间】:2022-01-17 08:03:18
【问题描述】:
我无法找到确切解决方案的基本问题。 我正在尝试将参数插入客户表:
def cur():
db = sqlite3.connect("bookdb.sqlite")
cursor = db.cursor()
return cursor
def add_customer(id, name, city, age):
cursor = cur()
sql = f'insert into customer(id,name,city,age) VALUES({id}, {name}, {city}, {age})'
cursor.execute(sql)
cursor.connection.commit()
使用时:
add_customer(7, 'jimbo', 'NY', 22)
我收到以下错误:
sqlite3.OperationalError: no such column: jimbo
当我只在函数中插入整数而不是字符串时,它似乎工作正常,名称列存在并且我无法向其中添加任何字符串。
【问题讨论】:
-
使用占位符和参数,而不是代入字符串。这将解决错误(您在
{name}和{city}周围缺少引号)并且还可以防止SQL 注入。 -
使用
print(sql),问题应该很明显了。