Skip to main content
 首页 » 编程设计

表删除/添加后 Python sqlite 索引超出范围错误

2025年05月04日7bhlsheji

我有一个围绕 sqlite3 模块编写的包装器,它允许我序列化来自多个线程的访问。它还允许我在更改表的定义时自动迁移表。我注意到当我删除一个表并重新添加更多列时,我得到了一个索引超出范围的错误。像这样:

conn = sqlite3.connect("test.db", detect_types=sqlite3.PARSE_COLNAMES) 
curs = conn.cursor() 
 
curs.execute("CREATE TABLE test (derp TEXT);"); conn.commit() 
curs.execute("INSERT INTO test (derp) VALUES ('deedle');"); conn.commit() 
print curs.execute("SELECT * FROM test;").fetchall() 
curs.execute("DROP TABLE test;"); conn.commit() 
curs.execute("CREATE TABLE test (derp TEXT, val REAL);"); conn.commit() 
curs.execute("INSERT INTO test (derp) VALUES ('deedle');"); conn.commit() 
print curs.execute("SELECT * FROM test;").fetchall() 
 
conn.close() 

将打印这个:

[(u'deedle',)] Traceback (most recent 
call last):   File "test.py", line 23, 
in <module> 
    print curs.execute("SELECT * FROM test;").fetchall() IndexError: list 
index out of range 

当执行第二个 SELECT 语句时。有谁知道这是为什么吗?

请您参考如下方法:

嗯,对我来说很好用 [(你'deedle',)] [(u'deedle', None)]