MySQLdb und das oeffnen und schliessen von connects bzw. cursor

01/10/2007 - 11:04 von Albert Hermeling | Report spam
Guten Morgen,

ich mache gerade meine ersten schritte mit MySQLdb in Python. Ich komme
damit (bis jetzt ;-) ganz gut zurecht. Meine Frage dient auch mehr dazu zu
überprüfen ob mein vorgehen, was das öffnen und schließen von connects bzw.
cursor Objekten betrifft, richtig ist. Hier der Rahmen in der ich jede
Methode bzw. Funktion programmiere:

def getUrl([self], argumente)
"""
docstring
"""
connection = None
cursor = None
try:
connection = MySQLdb.connect(**self.accountdata)
cursor = connection.cursor([passender Cursor])
cursor.execute[many](SQL-Querie, (arg1, arg2, arg3, usw.))
return cursor.fetchall() (Bei Selects)
finally:
if cursor: cursor.close()
if connection: connection.close()

Mir ist vor allen wichtig ob ihr die connection und/oder cursor Objekte
nach "einmaligen" Gebrauch schließt oder ob ihr es anders handhabt.

Mit freundlichen Grüßen

Albert
 

Lesen sie die antworten

#1 Diez B. Roggisch
01/10/2007 - 13:11 | Warnen spam
Albert Hermeling wrote:

Guten Morgen,

ich mache gerade meine ersten schritte mit MySQLdb in Python. Ich komme
damit (bis jetzt ;-) ganz gut zurecht. Meine Frage dient auch mehr dazu zu
überprüfen ob mein vorgehen, was das öffnen und schließen von connects
bzw. cursor Objekten betrifft, richtig ist. Hier der Rahmen in der ich
jede Methode bzw. Funktion programmiere:

def getUrl([self], argumente)
"""
docstring
"""
connection = None
cursor = None
try:
connection = MySQLdb.connect(**self.accountdata)
cursor = connection.cursor([passender Cursor])
cursor.execute[many](SQL-Querie, (arg1, arg2, arg3, usw.))
return cursor.fetchall() (Bei Selects)
finally:
if cursor: cursor.close()
if connection: connection.close()

Mir ist vor allen wichtig ob ihr die connection und/oder cursor Objekte
nach "einmaligen" Gebrauch schließt oder ob ihr es anders handhabt.



Connections werden offen gehalten, je nach Anwendung in einem Pool
gehandhabt. Cursor dagegen schliesst man nach gebrauch, wobei ich jetzt aus
dem Kopf nicht weiss, wie da die transaktions-semantik ist - ob da ein
automatisches commit gemacht wird oder nicht. Das fehlt dann oben, je nach
Datenbank (bzw. Tabellenmodell bei MySQL)

Diez

Ähnliche fragen