Я работаю с базой данных SQLite, используя привязки Python apsw
.Код выглядит так:
with apsw.Connection(path) as t:
c = t.cursor()
c.execute(...)
... more code ...
if c.execute(...).next()[0]:
raise Exception
Я ожидаю, что оператор with
установит точку сохранения, а оператор raise
откатит до этой точки сохранения (или, если нечего вызвать, подтвердит транзакцию),Он совершает просто отлично, но когда есть что-то для raise
, он отказывается откатываться с:
BusyError: BusyError: cannot rollback savepoint - SQL statements in progress
Я не уверен, где искать в первую очередь.Насколько я понимаю, ошибка означает, что есть другое соединение, которое блокирует доступ, но это не выглядит так из кода, и, если бы это было так, разве это не сработало бы и при фиксации?
SQLite 3.7.7.1, соответствующий apsw
, Python 2.7.