2016-06-15 7 views
0

SqlAlchemyエンジンを直接使用してMSSQLデータベースに複数の挿入を実行しようとしています。インサートのMSSQLでのSQLAlchemyロールバック

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

最初の挿入は問題ありません。私はすでに=私はでています「コミット」reset_on_return使用するキュー・プールの振る舞いを変更した

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

:2番目の挿入は、次のエラーで失敗しますロールバックをし、実行し、実行しようとしますこれがなぜ起こっているのかについての損失。複数の挿入を許可する方法に関するアイデア?

+0

あなたの例では、1つの挿入物しかありません。このコードを複数回実行しても機能しないと言っていますか? – univerio

+0

修正。データ変数は多くのレコードを含むリストですが、次にこれを実行しようとすると失敗します。 – grromrell

答えて

0

トランザクションにエラーがあると、reset_on_returnを "commit"に設定したかどうかに関係なく、SQLAlchemyはロールバックします。私はpandasデータフレームからnp.nanの値を挿入しようとしていたため、エラーが発生しました。

関連する問題