Seite 1 von 1

conn.close() wann genau sinnvoll?

Verfasst: Samstag 5. April 2008, 12:10
von Stolzi
Hi,
ich optimiere gerade eine meiner Klassen. Ich habe in der Klasse eine Funktion die mir eine Verbindung herstellt:

Code: Alles auswählen

def MysqlConn(self):        
        self.db = MySQLdb.connect(host=self.VdrHOST, user=self.MysqlUser, passwd=self.MysqlPass,db=self.MysqlDB)
        self.cursor = self.db.cursor()
und eine die sie mir schliesst:

Code: Alles auswählen

def CloseMysqlConn(self):
        self.db.close()
Im Moment öffnet sich jede der anderen Funktionen in der Klasse am Anfang eine Verbindung und schliesst sie dann wieder. Da aber eine Funktion teils 1000x aufgerufen wird halte ich es für nicht sonderlich effektiv jedes Mal die Verbindung neu zu öffnen, oder?

Die Variante, dass halt nur die aufrufende Funktion die Verbindung öffnet und schließt ist problematisch, da diese Funktionen teils direkt, teils von Überfunktionen aufgerufen werden.

Muss ich die Verbindung überhaupt schließen? Was bringt das eigentlich genau? Denn wenn ich das nicht muss, dann muss ich ja nur einmal eine Verbindung herstellen und diese dann immer verwenden.

Kann mir da mal wer weiterhelfen, der mehr davon versteht?

Danke

Verfasst: Samstag 5. April 2008, 12:27
von EyDu
Wenn da nicht massenhaft noch andere Klienten auf der Datenbank rumarbeiten genügt es, die Verbindung zu Beginn deines Programms zu öffnen und am Ende wieder zu schließen.

Verfasst: Samstag 5. April 2008, 12:40
von Stolzi
Ok, danke. Aber wenn das Skript / Programm beendet ist wird die Verbindung automatisch beendet, oder?

Verfasst: Samstag 5. April 2008, 13:05
von audax
nicht zwangsweise.

Du könntest aber z.B. eine Methode __exit__ definieren, wo die Verbindung geschlossen und das das with-statement benutzen.

Oder deinen mainloop in nen try, finally Block einschließen bei dem zum Schluss die Verbdinugn geschlossen wird.
Irgendwie so halt: TIMTOWTDI ;)