2

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
4

1 に答える 1

1

Cursor.close()で何が起こるかは、基礎となるデータベースの実装によって異なります。SQLiteの場合、現在は閉じなくても機能する可能性がありますが、他の実装または将来のSQLiteバージョンでは機能しない可能性があるため、Cursorオブジェクトを閉じることをお勧めします。Cursor.close()の詳細については、PEP249を参照してください

また、コードにタイプミスがあるようです。

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

おそらく

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

そうでなければ、あなたのコードは私にはうまく見えます。ハッピーコーディング:)。

于 2010-09-20T19:21:51.133 に答える