Sie können die gesamte Verbindung in einem Kontext-Manager wickeln, wie folgt aus:
from contextlib import contextmanager
import pyodbc
import sys
@contextmanager
def open_db_connection(connection_string, commit=False):
connection = pyodbc.connect(connection_string)
cursor = connection.cursor()
try:
yield cursor
except pyodbc.DatabaseError as err:
error, = err.args
sys.stderr.write(error.message)
cursor.execute("ROLLBACK")
raise err
else:
if commit:
cursor.execute("COMMIT")
else:
cursor.execute("ROLLBACK")
finally:
connection.close()
Dann etwas tun, wo immer Sie eine Datenbankverbindung benötigen:
with open_db_connection("...") as cursor:
# Your code here
Die Die Verbindung wird geschlossen, wenn Sie den with-Block verlassen. Dies wird auch die Transaktion Rollback, wenn eine Ausnahme auftritt oder wenn Sie den Block nicht mit with open_db_connection("...", commit=True)
öffnen.
Lustig die Zusammenlegung verwende ich konnte, aber mysql startet gerade ein anderes Anschl. – Merlin