当前位置: 首页 > 面试题库 >

如果我不关闭Python SQLite中的数据库连接怎么办

贺功
2023-03-14
问题内容

我正在做这样的事情…

conn = sqlite3.connect(db_filename)

with conn:
    cur = conn.cursor()
    cur.execute( ... )

with自动提交更改。但是文档对关闭连接一无所知。

实际上,我可以conn在以后的语句(已测试)中使用。因此,似乎上下文管理器没有关闭连接。

我是否必须手动关闭连接。如果我打开它怎么办?

编辑

我的发现:

  • 我已经测试并确认了上下文管理器中的 连接未关闭 。在之后__exit__,上下文管理器仅通过执行以下操作来提交更改:conn.commit()
  • with conn并且with sqlite3.connect(db_filename) as conn相同,因此使用其中任何一个仍将保持连接活动
  • with 语句不会创建新的作用域,因此在with套件内创建的所有变量都可以在其外部访问
  • 最后,您应该手动关闭连接

问题答案:

在回答如果您不关闭SQLite数据库会发生什么的特定问题时,答案很简单,适用于以任何编程语言使用SQLite。当通过代码显式关闭连接或通过程序退出隐式关闭连接时,所有未完成的事务都会回滚。(回滚实际上是由下一个打开数据库的程序完成的。)如果没有未完成的事务打开,则什么也不会发生。

这意味着您不必担心总是在进程退出之前关闭数据库,而您应该注意事务以确保启动它们并在适当的时间提交。



 类似资料:
  • 我正在尝试使用python和MySQL开发药房管理系统。但我在连接数据库时遇到了问题。 下面是一些代码:

  • 我已经检查了数据库运行良好。当发生这种情况时,我必须重新启动我的spring-boot应用程序。我怎么检查问题是什么?为什么数据库连接被关闭了?如果发生这种情况,我是否可以重新连接数据库?下面是我的应用程序.属性:

  • 问题内容: 我有些困惑,我从阅读以下内容 你不需要关闭conn连接吗?如果conn.close()没有发生,那实际上是怎么回事? 我有一个正在维护的私有Web应用程序,该应用程序当前无法关闭任何一种形式,但是重要的应用程序真的是stmt,conn还是两者兼而有之? 该站点间歇性地关闭,但是服务器一直在说这是数据库连接问题,我怀疑它没有关闭,但是我不知道该关闭哪个。 问题答案: 使用完之后,你需要通

  • 问题内容: 我在hibernate状态下使用jpa。我有以下方法: 可以,但是它关闭了与数据库的连接。当秒被执行时 引发什么原因 我的配置: 编辑 我不知道为什么“ firstJDBCTemplateQuery”关闭数据库连接。如何解决这个问题? 堆栈跟踪: 编辑 我检查了堆栈跟踪。 编辑 我用 是 是 编辑调试结果 : 启动Beginin交易: /////////////////////////

  • 我正在使用sql server 2008。我需要检查是否可以使用服务器名称、端口号、数据库名称、用户名和密码建立连接。 有没有简单的方法可用?

  • 我想通过pymongo阅读集合,但我得到以下错误: 回溯(最近的调用为last):文件“C://users/gsingh/pycharmprojects/mc/quizQuestionAnswers.py”,第21行,pprint.pprint(posts.find_one())文件“C:\users\gsingh\appdata\local\continuum\anaconda2\lib\sit