2016-06-15 5 views
0

Я пытаюсь сделать несколько вставок в базу данных MSSQL, используя механизм SqlAlchemy.SQLAlchemy Откат в MSSQL на вставках

table = metadata.tables['TestTable'] 
ins = table.insert() 
with engine.begin() as conn: 
    conn.execute(ins, data) 

Первая вставка будет работать не проблема. Вторая вставка будет пытаться запустить затем выполнить откат, который затем завершится со следующей ошибкой:

sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('25000', '[25000' [FreeTDS][SQL Server]The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION. (3903)(SQLEndTran)') 

Я уже измененное поведение пула очереди использовать reset_on_return = «совершить», так что я нахожусь в потеря за то, почему это происходит. Любые идеи о том, как разрешить несколько вставок?

+0

Ваш пример только вставляет. Вы говорите, что запуск этого кода несколько раз не работает? – univerio

+0

Исправить. Теперь переменная данных - это список, содержащий множество записей, но в следующий раз, когда я попытаюсь запустить это, он терпит неудачу. – grromrell

ответ

0

Получается, что при возникновении ошибки в транзакции SQLAlchemy все равно откатится, установив reset_on_return на «commit» или нет. Я пытался вставить значения np.nan из фрейма данных pandas, вызывая ошибку.

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