Dans cx_Oracle (ou Oracle en général), est-il possible d'allouer un curseur pour chaque requête, ou de réutiliser un curseur sur plusieurs requêtes.Quels sont les compromis entre la réutilisation d'un curseur et la création d'un nouveau curseur?
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()
Bien sûr, les deux approches renvoient les mêmes données.
Quels sont les compromis entre les deux approches? Est-ce que l'un est particulièrement plus ou moins efficace? Existe-t-il des pièges potentiels pour réutiliser un curseur sur de nombreuses requêtes?