Peewee模型会自动关闭连接吗?

9
我将使用peewee访问SQLite数据库。
我已经创建了一个名为model.py的文件,内容如下:
from peewee import *

db = SqliteDatabase('people.db')

class Person(Model):
    name = CharField()
    birthday = DateField()
    is_relative = BooleanField()

    class Meta:
        database = db

在另一个Python文件中(使用import model),我使用类似于Person.create()Person.select(name=='Joe').delete_instance()的调用来操作数据库。

快速入门文档在结尾处提到需要调用db.close()来关闭连接。这个适用于我的情况吗?我需要像这样调用model.db.close()吗?


请问相对路径属性(is_relative attribute)的作用是什么? - shiva
2个回答

10
根据 Charles Leifer(peewee的开发者)所说,终止连接是程序员的职责。关于连接池的文档说明所有连接都是线程本地的,因此只要模型在使用中,连接就会保持打开状态并在包含事务的线程加入主线程时关闭。

Charles明确回答了关于连接池的问题。答案有点笼统,但我想这同样适用于所有连接:关于连接池

有关该主题的隐含答案:

错误2006:MySQL服务器已断开连接

摘自文档 快速入门页面

尽管没有必要显式地打开连接,但这是一个好的实践,因为它会立即显示与数据库连接相关的任何错误,而不是在执行第一个查询时的任意时间后。同样,当你完成操作时关闭连接也是一个好习惯 - 例如,Web应用程序可能在接收请求时打开连接,并在发送响应时关闭连接。
根据这些信息,对你的问题的最终答案是:不。

3
你需要手动打开和关闭连接:
在你的情况下(使用db = SqliteDatabase('people.db')),
你可以通过以下方式建立与数据库的连接:
db.connect()

接下来,您可以根据您的需要对数据库进行操作,最后使用以下命令关闭连接:

db.close()

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接