En cx_Oracle (u Oracle en general), es posible asignar un cursor para cada consulta o reutilizar un cursor entre varias consultas.¿Cuáles son las ventajas y desventajas de reutilizar un cursor vs. crear un nuevo cursor?
def getSomeData(curs): # case 1: pass in a cursor, which is generally
curs.execute('select ...') # reused across queries
return curs.fetchall()
def getSomeData(conn): # case 2: pass in a connection,allocate
curs=conn.cursor() # a cursor for this query
curs.execute('select ...')
return curs.fetchall()
Por supuesto, ambos enfoques devuelven los mismos datos.
¿Cuáles son las ventajas y desventajas entre los dos enfoques? ¿Es uno particularmente más o menos eficiente? ¿Hay algún riesgo potencial de reutilizar un cursor sobre muchas consultas?