Estoy escribiendo un script python CGI que consultará una base de datos MySQL. Estoy usando el módulo MySQLdb. Como la base de datos se consultará repetidamente, escribí esta función ....debería reutilizar el cursor en el módulo python MySQLdb
def getDatabaseResult(sqlQuery,connectioninfohere):
# connect to the database
vDatabase = MySQLdb.connect(connectioninfohere)
# create a cursor, execute and SQL statement and get the result as a tuple
cursor = vDatabase.cursor()
try:
cursor.execute(sqlQuery)
except:
cursor.close()
return None
result = cursor.fetchall()
cursor.close()
return result
Mi pregunta es ... ¿Es esta la mejor práctica? ¿Debo reutilizar mi cursor dentro de mis funciones? Por ejemplo. ¿Qué es mejor ...
def callsANewCursorAndConnectionEachTime():
result1 = getDatabaseResult(someQuery1)
result2 = getDatabaseResult(someQuery2)
result3 = getDatabaseResult(someQuery3)
result4 = getDatabaseResult(someQuery4)
o acabar con la función getDatabaseeResult todos juntos y hacer algo como ..
def reusesTheSameCursor():
vDatabase = MySQLdb.connect(connectionInfohere)
cursor = vDatabase.cursor()
cursor.execute(someQuery1)
result1 = cursor.fetchall()
cursor.execute(someQuery2)
result2 = cursor.fetchall()
cursor.execute(someQuery3)
result3 = cursor.fetchall()
cursor.execute(someQuery4)
result4 = cursor.fetchall()
Justo lo que necesitaba. Gracias. – b10hazard
Otra pequeña noticia: en MySQLdb la creación del cursor no hace nada con las solicitudes de red al DB, por lo que es una operación económica. – Serge