Ich versuche, mehrere Einsätze in eine MSSQL-Datenbank zu tun, indem Sie direkt die SqlAlchemy-Engine verwenden.SQLAlchemy Rollback in MSSQL auf Inserts
table = metadata.tables['TestTable']
ins = table.insert()
with engine.begin() as conn:
conn.execute(ins, data)
Die erste Einfügung funktioniert kein Problem. Der zweite Einsatz wird versuchen, läuft dann einen Rollback ausführen, die dann mit dem folgenden Fehler fehl:
sqlalchemy.exc.ProgrammingError: (pyodbc.ProgrammingError) ('25000', '[25000' [FreeTDS][SQL Server]The ROLLBACK TRANSACTION request has no corresponding BEGIN TRANSACTION. (3903)(SQLEndTran)')
ich bereits das Verhalten der Warteschlange Pool verändert hat zu verwenden reset_on_return = „begehen“, so ich ein bin Verlust dafür, warum dies geschieht. Irgendwelche Ideen, wie man mehrere Einsätze erlaubt?
In Ihrem Beispiel wird nur ein Satz eingefügt. Willst du sagen, dass das Ausführen dieses Codes mehrere Male nicht funktioniert? – univerio
Korrekt. Jetzt ist die Datenvariable eine Liste, die viele Datensätze enthält, aber das nächste Mal, wenn ich versuche, dies auszuführen, schlägt es fehl. – grromrell