如果我执行包含以下内容的脚本,然后尝试删除文件系统上的 mydb,则在关闭 python 空闲之前我无法这样做。这里有什么问题?
with sqlite3.connect(r'./mydb') as connection:
cursor = connection.cursor()
cursor.executemany('...' )
connection.commit()
如果我执行包含以下内容的脚本,然后尝试删除文件系统上的 mydb,则在关闭 python 空闲之前我无法这样做。这里有什么问题?
with sqlite3.connect(r'./mydb') as connection:
cursor = connection.cursor()
cursor.executemany('...' )
connection.commit()
sqlite
连接上下文管理器管理事务,而不是连接。__exit__
处理程序提交或回滚,它不会关闭连接。请参阅将连接用作上下文管理器:
连接对象可以用作自动提交或回滚事务的上下文管理器。如果发生异常,事务回滚;否则,事务被提交。
您必须自己显式关闭连接,或使用contextlib.closing
上下文管理器:
from contextlib import closing
with closing(sqlite3.connect(r'./mydb')) as connection:
with connection:
cursor = connection.cursor()
cursor.executemany('...' )