2014-09-05 5 views
1

Как использовать транзакции sqlite в python?Python sqlite transaction

Следующий код вызывает исключение OperationalError: cannot commit - no transaction is active на cur.execute('COMMIT') линии:

import sqlite3 
con = sqlite3.connect(':memory:') 
cur = con.cursor() 
cur.execute('CREATE TABLE test(p)') 
cur.execute('BEGIN') 
cur.execute('INSERT INTO test(p) values (?)', (1,)) 
cur.execute('COMMIT') 

Я играл с isolation_level, но ни одно из значений не избавляется от исключения.

+1

Ответы на этот вопрос может помочь вам: http://stackoverflow.com/questions/15856976/transaction-with-python-sqlite3 – bernie

+0

https://docs.python.org/2/library/sqlite3.html#controlling-transactions – Kasramvd

ответ

1

Попробуйте включить режим автоматической фиксации:

con.isolation_level = None 

Ссылки:

+0

Пробовал все остальные значения, забыл попробовать «Нет» :( – simonzack

+0

Не означает, что режим autocommit означает, что каждый 'execute' является завернутый в транзакцию? – simonzack

+0

Нет. Это означает, что каждый кадр завернут в транзакцию **, если ** нет ожидающей транзакции. «* Режим автокомпозиции отключен оператором BEGIN. Режим автокомпозиции снова активируется COMMIT или ROLLBACK. *" - http://www.sqlite.org/c3ref/get_autocommit.html –

Смежные вопросы