【发布时间】:2021-09-14 20:07:00
【问题描述】:
我正在尝试将姓氏值插入“测试”表,但出现异常。我的问题是我无法将字典的字符串表示形式插入表中。
Exception thrown: OperationalError
next to "Surname": syntax error
我的代码:
con = sql.connect('test.db')
with con:
cur = con.cursor()
cur.execute("CREATE TABLE IF NOT EXISTS `test` (`name` STRING, `surname` STRING)")
name = input("Name\n> ")
surname = str({'Surname': 1})
cur.execute(f"INSERT INTO `test` VALUES ('{name}', '{surname}')")
con.commit()
cur.close()
【问题讨论】:
-
surname 的值为
{'Surname': 1},您是否尝试将值{'Surname': 1}保存在表的 surname 字段中? -
您可以在表和字段名称周围使用反引号(尽管此处不需要它们),但您必须在字段值周围使用双引号。您已要求提供一项输入,
name。surname应该是什么?因为你所拥有的并不是在做。 -
请使用参数化查询(具体语法取决于库)而不是原始字符串替换,这容易受到 SQL 注入攻击。
标签: python sql python-3.x sqlite syntax-error