数据库(字典)中的语法错误 (Python)
Syntax error in database (dictionary) (Python)
我正在尝试将姓氏值插入“测试”table,但出现异常。我的问题是我无法将字典的字符串表示形式插入 table.
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()
使用占位符将使您无需清理输入(并使用引号乱搞),并保护您免受 SQL 注入攻击。
根据第 con = sql.connect('test.db')
行,我猜您正在使用 sqlite3。如果你不一样,原则应该仍然成立,但占位符的确切语法可能会有所不同:
cur.execute("INSERT INTO `test` VALUES (?, ?)", (name, surname))
我正在尝试将姓氏值插入“测试”table,但出现异常。我的问题是我无法将字典的字符串表示形式插入 table.
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()
使用占位符将使您无需清理输入(并使用引号乱搞),并保护您免受 SQL 注入攻击。
根据第 con = sql.connect('test.db')
行,我猜您正在使用 sqlite3。如果你不一样,原则应该仍然成立,但占位符的确切语法可能会有所不同:
cur.execute("INSERT INTO `test` VALUES (?, ?)", (name, surname))