SQLite建表插入数据时出现near ")"语法错误该如何解决
报错原因
- 核心语法问题:
CREATE TABLE语句中最后一个字段price int末尾多了多余的逗号,SQL语法不允许字段列表的最后一项末尾加逗号,解析器遇到这个多余逗号后再读到右括号就会触发语法错误。 - 代码还存在两个潜在问题:
- 事务提交需要调用数据库连接对象的
commit()方法,你写的cursor.commit()是错误写法,会导致插入的数据无法正常持久化到数据库 - 插入语句中的
0001作为整型值时,Python会自动省略前置的0,最终存入的值为1,如果需要保留订单号的前置0,建议将orderno字段类型调整为TEXT,插入时传入字符串格式的订单号。
- 事务提交需要调用数据库连接对象的
修复后可运行代码
import sqlite3 con = sqlite3.connect("test.db") cursor = con.cursor() # 去掉了price字段后的多余逗号 cursor.execute('''CREATE TABLE order_history (orderno int, qty int, price int) ''') # 若需保留订单号前置0,可将orderno类型改为TEXT,此处插入值写为'0001' cursor.execute("INSERT INTO order_history VALUES (1, 1, 10)") # 调用连接对象的commit方法提交事务 con.commit() # 操作完成后关闭资源 cursor.close() con.close()
内容的提问来源于stack exchange,提问作者tbysyl
相关产品推荐
相关产品推荐

