SQLite实现的打开/关闭功能

发布于 2024-09-24 12:41:41 字数 708 浏览 4 评论 0原文

我试图提出 SQLiteDB 对象,以下是它的打开/关闭代码。 这工作没有问题吗?我错过了什么重要的事情吗?

对于close(),我使用con.close()和cursor.close(),但我想知道cursor.close()是否是必要的。

class SQLiteDB(object):
    def __init__(self, dbFile, connect = True):
        self.dbFile = dbFile

        self.con = None
        self.cursor = None

        if connect:
            self.open()

    def __del__(self):
        if self.con:
            self.close()

    def open(self):
        self.con = sqlite3.connect(self.dbFile)
        self.cursor = self.connector.cursor()
        return self.con, self.cursor

    def close(self):
        self.con.close()
        self.cursor.close()
        self.cursor = None
        self.con = None

I'm trying to come up with SQLiteDB object, and following is the open/close code for it.
Does this work without problem? Am I missing something important?

For close(), I use con.close() and cursor.close(), but I'm wondering if cursor.close() is necessary.

class SQLiteDB(object):
    def __init__(self, dbFile, connect = True):
        self.dbFile = dbFile

        self.con = None
        self.cursor = None

        if connect:
            self.open()

    def __del__(self):
        if self.con:
            self.close()

    def open(self):
        self.con = sqlite3.connect(self.dbFile)
        self.cursor = self.connector.cursor()
        return self.con, self.cursor

    def close(self):
        self.con.close()
        self.cursor.close()
        self.cursor = None
        self.con = None

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

稳稳的幸福 2024-10-01 12:41:41

Cursor.close() 上发生的情况取决于底层数据库实现。对于 SQLite,它当前可能无需关闭即可工作,但对于其他实现或未来的 SQLite 版本,它可能不会,因此我建议关闭 Cursor 对象。您可以在 PEP 249 中找到有关 Cursor.close() 的更多信息。

另外,您的代码中似乎有一个拼写错误:

self.connector = sqlite3.connect(self.dbFile)

可能应该是

self.con = sqlite3.connect(self.dbFile)

否则您的代码对我来说看起来很好。快乐编码:)。

What happens on Cursor.close() depends on the underlying database implementation. For SQLite it might currently work without closing, but for other implementations or a future SQLite version it might not, so I would recommend to close the Cursor object. You can find further information on Cursor.close() in PEP 249.

Also, there seems to be a typo in your code:

self.connector = sqlite3.connect(self.dbFile)

should probably be

self.con = sqlite3.connect(self.dbFile)

Otherwise your code looks fine to me. Happy coding :) .

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文