SQL导入报错:sqlite3.OperationalError: 1 values for 2 columns 求助
解决SQLite导入时的
1 values for 2 columns错误 错误原因分析
你的crea_posts.sql文件里有两处INSERT语句不符合表结构要求:
- 第二个INSERT语句:仅提供了
titolo列的值,未给info列赋值,导致值的数量(1个)与目标列数量(2个)不匹配。 - 第三个INSERT语句:两个值之间缺少逗号分隔,SQL会将两个字符串拼接为一个,最终仅识别到1个值,与2列的要求冲突。
修正后的SQL代码
DROP TABLE IF EXISTS posts; CREATE TABLE posts ( titolo TEXT, info TEXT ); INSERT INTO posts (titolo, info) VALUES ( 'Lava la macchina', 'Lava accuratamente la carrozzeria e gli interni' ); -- 补充info列的值(可设为NULL或空字符串) INSERT INTO posts (titolo, info) VALUES ( 'Lava il frigo', NULL ); -- 为两个值添加逗号分隔 INSERT INTO posts (titolo, info) VALUES ( 'Porta la macchina dal meccanico', 'Guasto al motore' );
验证方式
重新运行你的Python脚本即可完成导入:
import sqlite3 connection = sqlite3.connect('database.db') with open('crea_posts.sql') as f: connection.executescript(f.read()) connection.commit() connection.close()
额外说明:如果info列允许空值,也可以仅指定titolo列插入,SQL会自动给info列赋默认值(通常为NULL),示例如下:
INSERT INTO posts (titolo) VALUES ('Lava il frigo');
内容的提问来源于stack exchange,提问作者Antonio Trirocco
相关产品推荐
相关产品推荐

