cx_Oracle: Hogyan végighaladni eredményeként beállítva?

szavazat
35

Számos módja van, hogy végighaladni valamilyen eredménye. Mik a kompromisszum az egyes?

A kérdést 03/08/2008 02:15
a forrás felhasználó
Más nyelveken...                            


3 válasz

szavazat
35

A kanonikus módja az, hogy a beépített kurzor bejáró.

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

Használhatja fetchall(), hogy minden sort egyszerre.

for row in curs.fetchall():
    print row

Ez lehet kényelmesen használni ezt létrehozni Python tartalmazó lista visszaadott értékek:

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

Ez hasznos lehet a kisebb eredmény határozza meg, de lehet rossz mellékhatásai, ha az eredmény halmaz nagy.

  • Meg kell várni a teljes eredményt meg kell visszajuttatni az ügyfél folyamatban.

  • Lehet enni sok memóriát az ügyfél, hogy tartsa a beépített listán.

  • Ez eltarthat egy ideig, amíg Python építésére és bontani a lista, amely fogsz azonnal dobja egyébként.


Ha tudja, hogy van egy egysoros kerül vissza az eredmény meg lehet hívni fetchone(), hogy az egysoros.

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

Végül, akkor hurkot az eredmény meg lekérése egy sort egy időben. Általában nincs különös előnye ezt át a bejáró.

row = curs.fetchone()
while row:
    print row
    row = curs.fetchone()
Válaszolt 03/08/2008 02:17
a forrás felhasználó

szavazat
21

Saját előnyös módon a kurzort bejáró, de amelyben először a arraysize tulajdonsága a kurzort.

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

Ebben a példában cx_Oracle beolvassuk sorok Oracle 256 sort egy időben, számának csökkentése hálózati menettérti hogy kell elvégezni

Válaszolt 24/09/2008 03:51
a forrás felhasználó

szavazat
4

Van még az út psyco-pgúgy tűnik, hogy csináld ... Abból, amit gyűjteni, úgy tűnik, hogy hozzon létre szótár-szerű sor-proxy Térkép kulcs keresési memóriába blokk által visszaadott lekérdezés. Ebben az esetben, vonzó az egész választ, és dolgozik egy hasonló proxy-gyár a sorok fölé tűnik hasznos ötlet. Most jut eszembe, hogy mégis, ez sokkal inkább, mint a Lua mint a Python.

Továbbá, ezt kell alkalmazni valamennyi PEP-249 DBAPI2.0 interfészek, nem csak az Oracle, vagy te csak azt jelenti, leggyorsabb segítségével Oracle ?

Válaszolt 24/08/2008 18:28
a forrás felhasználó

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more