Функция открытия / закрытия реализации SQLite - PullRequest
2 голосов
/ 20 сентября 2010

Я пытаюсь найти объект 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

1 Ответ

1 голос
/ 20 сентября 2010

То, что происходит с Cursor.close (), зависит от базовой реализации базы данных. Для SQLite он может в настоящее время работать без закрытия, но для других реализаций или будущей версии SQLite это может не сработать, поэтому я бы рекомендовал закрыть объект Cursor. Вы можете найти дополнительную информацию о Cursor.close () в PEP 249 .

Кроме того, кажется, в вашем коде есть опечатка:

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

должно быть

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

В противном случае ваш код выглядит нормально для меня. Удачного кодирования :).

...