无法删除sqlite数据库

时间:2013-09-25 08:35:04

标签: python windows python-3.x sqlite

如果我执行包含以下内容的脚本然后尝试删除文件系统上的mydb,我将无法执行此操作,直到我关闭python空闲。这是什么问题?

   with sqlite3.connect(r'./mydb') as connection:
      cursor = connection.cursor()
      cursor.executemany('...' )
      connection.commit()

1 个答案:

答案 0 :(得分:2)

sqlite连接上下文管理器管理事务,而不是连接。 __exit__处理程序提交或回滚,关闭连接。见Using the connection as a context manager

  

连接对象可以用作自动提交或回滚事务的上下文管理器。如果发生异常,则回滚事务;否则,交易已经提交。

您必须自己明确关闭连接,或使用contextlib.closing context manager

from contextlib import closing

with closing(sqlite3.connect(r'./mydb')) as connection:
    with connection:
        cursor = connection.cursor()
        cursor.executemany('...' )