我正在尝试提出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

最佳答案

Cursor.close()会发生什么情况取决于基础数据库的实现。对于SQLite,它可能当前没有关闭就可以工作,但是对于其他实现或将来的SQLite版本,则可能没有,所以我建议关闭Cursor对象。您可以在PEP 249中找到有关Cursor.close()的更多信息。

另外,您的代码中似乎还有一个错字:

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


应该是

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


否则,您的代码对我来说看起来不错。快乐的编码:)。

关于python - SQLite实现的打开/关闭功能,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3754151/

10-15 12:55