sql >> Database >  >> RDS >> Oracle

cx_Oracle:Hoe herhaal ik een resultatenset?

De canonieke manier is om de ingebouwde cursor-iterator te gebruiken.

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

U kunt fetchall() . gebruiken om alle rijen tegelijk te krijgen.

for row in curs.fetchall():
    print row

Het kan handig zijn om dit te gebruiken om een ​​Python-lijst te maken met de geretourneerde waarden:

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

Dit kan handig zijn voor kleinere resultatensets, maar kan nadelige bijwerkingen hebben als de resultatenset groot is.

  • U moet wachten tot de volledige resultatenset is teruggestuurd naar uw klantproces.

  • U kunt veel geheugen bij uw cliënt opslokken om de opgebouwde lijst vast te houden.

  • Het kan even duren voordat Python de lijst heeft opgebouwd en gedeconstrueerd die u toch meteen gaat weggooien.

Als u weet dat er een enkele rij wordt geretourneerd in de resultatenset, kunt u fetchone() aanroepen om de enkele rij te krijgen.

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

Ten slotte kunt u de resultatenset doorlopen en één rij tegelijk ophalen. Over het algemeen heeft dit geen bijzonder voordeel ten opzichte van het gebruik van de iterator.

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


  1. Maak meerdere invoer in mysql-tabel tegelijk met één verzendknop

  2. Berekening van de gewogen gemiddelde kosten van productenvoorraad

  3. Hoe maak je een initializer om een ​​mysql-database te maken en te migreren?

  4. Hoe moet ik mijn MYSQL-tafel(s) ontwerpen?