擅长:python、mysql、java
<p>您可以将整个连接包装在上下文管理器中,如下所示:</p>
<pre><code>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()
</code></pre>
<p>然后在需要数据库连接时执行以下操作:</p>
<pre><code>with open_db_connection("...") as cursor:
# Your code here
</code></pre>
<p>当您离开with块时,连接将关闭。如果发生异常或未使用<code>with open_db_connection("...", commit=True)</code>打开块,则此操作也将回滚事务。</p>