Oracle
 sql >> Baza danych >  >> RDS >> Oracle

cx_Oracle:Jak iterować zestaw wyników?

Kanonicznym sposobem jest użycie wbudowanego iteratora kursora.

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

Możesz użyć fetchall() aby uzyskać wszystkie wiersze naraz.

for row in curs.fetchall():
    print row

Wygodne może być użycie tego do utworzenia listy Pythona zawierającej zwrócone wartości:

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

Może to być przydatne w przypadku mniejszych zestawów wyników, ale może mieć złe skutki uboczne, jeśli zestaw wyników jest duży.

  • Musisz poczekać, aż cały zestaw wyników zostanie zwrócony do procesu klienta.

  • Możesz zajmować dużo pamięci w kliencie, aby przechowywać skompilowaną listę.

  • Python może trochę potrwać, zanim zbuduje i zdekonstruuje listę, którą i tak zamierzasz natychmiast odrzucić.

Jeśli wiesz, że w zestawie wyników zwracany jest pojedynczy wiersz, możesz wywołać fetchone() aby uzyskać pojedynczy rząd.

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

Na koniec możesz zapętlić zestaw wyników, pobierając jeden wiersz na raz. Ogólnie rzecz biorąc, nie ma to szczególnej przewagi nad używaniem iteratora.

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak korzystać z funkcji analitycznych w Oracle (nad partycją według słowa kluczowego)

  2. wybierz poziom z podwójnego połączenia według poziomu <=4 jak to działa wewnętrznie

  3. Oracle:ORA-12154:Problem z TNS:64-bitowy Excel/Windows 10 64-bitowy

  4. Pytanie PreparedStatement w Javie przeciwko Oracle

  5. Oracle wstawia znak do łańcucha