SQLite创建表后插入数据报错:表仅1列却提供3个值
SQLite创建表后插入数据报错:表仅1列却提供3个值
嘿,我一眼就揪出问题啦!你创建表的SQL语句里犯了个超容易忽略的小错误——列定义之间没加逗号,导致SQLite把所有列的内容当成了单个列的定义,所以你的analysisResults表实际上真的只有1列,这就是插入3个值会报错的原因。
先看你原来的创建表代码:
self.cur.execute("""CREATE TABLE IF NOT EXISTS analysisResults( subjectID INTEGER frameworkID INTEGER scoreInFramework INTEGER)""")
你看,subjectID INTEGER、frameworkID INTEGER、scoreInFramework INTEGER这三行之间没有逗号分隔,SQLite会把它们解析成一个列(列名是subjectID,后面的内容会被当成无效的类型描述,但最终表只会生成1列)。
只需要给列之间加上逗号就能解决问题,修正后的完整代码如下:
self.cur.execute("DROP TABLE IF EXISTS analysisResults") self.cur.execute("""CREATE TABLE IF NOT EXISTS analysisResults( subjectID INTEGER, frameworkID INTEGER, scoreInFramework INTEGER)""") self.cur.execute("""INSERT INTO analysisResults VALUES(1, 1, 1)""")
另外你担心的「其他表的主键标识符」问题完全不相关哦,这个报错就是纯粹的SQL语法错误,和其他表的结构没有关系~
备注:内容来源于stack exchange,提问作者Jack Walker
相关产品推荐
相关产品推荐

