如何解决SQLite3中cursor.execute()创建表时的语法错误
问题解决:SQLite创建表时的语法错误
你的代码报错是因为Primary是SQLite的保留关键字,不能直接作为列名使用,SQL解析器会把它当成SQL语法的一部分,从而触发syntax error。
修改方案有两种:
- 给关键字列名加上双引号或方括号,让SQLite把它识别为普通列名:
import sqlite3 con = sqlite3.connect('Exercise Database.db') c = con.cursor() c.execute('''CREATE TABLE IF NOT EXISTS Exercises( Name TEXT, Force TEXT, Equipment TEXT, OneRM REAL, Difficulty TEXT, "Primary" TEXT, Seconary TEXT, Tertiary TEXT, Animation BLOB )''') con.commit() con.close()
- 直接修改列名,避免使用关键字,比如改成
PrimaryMuscle:
import sqlite3 con = sqlite3.connect('Exercise Database.db') c = con.cursor() c.execute('''CREATE TABLE IF NOT EXISTS Exercises( Name TEXT, Force TEXT, Equipment TEXT, OneRM REAL, Difficulty TEXT, PrimaryMuscle TEXT, Seconary TEXT, Tertiary TEXT, Animation BLOB )''') con.commit() con.close()
推荐第二种方案,这样后续编写查询语句时不会再遇到类似的关键字冲突问题。
内容的提问来源于stack exchange,提问作者John Creley
相关产品推荐
相关产品推荐

