Python sqlite index вне диапазона ошибка после удаления / добавления таблицы? - PullRequest
2 голосов
/ 11 мая 2011

У меня есть оболочка, которую я написал для модуля 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. Кто-нибудь знает, почему это так?

1 Ответ

1 голос
/ 11 мая 2011

Ну, у меня все работает отлично [(u'deedle',)] [(u'deedle', None)]

...