Oracle
 sql >> Base de données >  >> RDS >> Oracle

cx_Oracle :comment parcourir un ensemble de résultats ?

La méthode canonique consiste à utiliser l'itérateur de curseur intégré.

curs.execute('select * from people')
for row in curs:
    print row

Vous pouvez utiliser fetchall() pour obtenir toutes les lignes à la fois.

for row in curs.fetchall():
    print row

Il peut être pratique de l'utiliser pour créer une liste Python contenant les valeurs renvoyées :

curs.execute('select first_name from people')
names = [row[0] for row in curs.fetchall()]

Cela peut être utile pour les ensembles de résultats plus petits, mais peut avoir des effets secondaires néfastes si l'ensemble de résultats est volumineux.

  • Vous devez attendre que l'ensemble des résultats soit renvoyé à votre processus client.

  • Vous pouvez consommer beaucoup de mémoire dans votre client pour tenir la liste construite.

  • Cela peut prendre un certain temps à Python pour construire et déconstruire la liste que vous allez de toute façon immédiatement supprimer.

Si vous savez qu'une seule ligne est renvoyée dans le jeu de résultats, vous pouvez appeler fetchone() pour obtenir la ligne unique.

curs.execute('select max(x) from t')
maxValue = curs.fetchone()[0]

Enfin, vous pouvez parcourir le jeu de résultats en récupérant une ligne à la fois. En général, il n'y a aucun avantage particulier à faire cela par rapport à l'utilisation de l'itérateur.

row = curs.fetchone()
while row:
    print row
    row = curs.fetchone()