Cursor Object¶

Cursor.__enter__()¶

vstupní bod pro kurzor jako správce kontextu. Vrací se sama.

Poznámka

tato metoda je rozšířením definice DB API.

Cursor.__exit__()¶

výstupní bod pro kurzor jako správce kontextu. Zavře kurzor.

Poznámka

tato metoda je rozšířením definice DB API.

Cursor.arraysize

Tento read-write atribut může být použit k nastavení počtu řádků internallyfetched a vyrovnávací paměti interní volání do databáze při načítání rowsfrom SELECT a KURZORY REF. Hodnota může drasticky ovlivnitvýkon dotazu, protože přímo ovlivňuje počet síťových cest mezi Pythonem a databází. U metod jakofetchone() a fetchall() se nemění, kolik řádků je vráceno do aplikace. Profetchmany() je to výchozí počet řádků, které chcete načíst.

vzhledem k výhodám výkonu je výchozí Cursor.arraysize 100místo 1, které DB API doporučuje. Tato hodnota znamená 100 řádkůjsou načteny každým interním voláním do databáze.

viz Tuning Fetch Performance Pro více informací.

Cursor.bindarraysize

Toto čtení a zápis atribut určuje počet řádků, které se vážou na časa se používá při vytváření proměnných pomocí setinputsizes() nebovar(). Výchozí hodnota 1 znamená vázat jeden řádek najednou.

Poznámka

definice DB API tento atribut nedefinuje.

Cursor.arrayvar(dataType, value) Vytvořte proměnnou pole přidruženou k kurzoru daného typu avelikost a vraťte proměnný objekt. Hodnota je buď aninteger určující počet prvků, které mají být přiděleny, nebo je to seznam a počet přidělených prvků je čerpán z velikosti seznamu. Pokud je hodnota seznam, je proměnná nastavena také s obsahem seznamu. Pokud velikost není uvedeno, a typ je řetězec nebo binární, 4000 bytesis přiděleny. To je nutné pro předávání polí do PL / SQL (v případech, kdy seznam může být prázdný a typ nelze určit automaticky) nebo pro návrat polí z PL / SQL.

proměnné pole lze použít pouze pro asociativní pole PL / SQL s přilehlými klíči. Pro asociativní pole PL / SQL s řídce osídlenými keysor pro varrays a vnořené tabulky je třeba použít přístup uvedený v tomto příkladu.

Poznámka

definice DB API tuto metodu nedefinuje.

Cursor.bindnames()¶

vraťte seznam názvů proměnných bind vázaných na příkaz. Všimněte si, že astatement musí být připraven jako první.

Poznámka

definice DB API tuto metodu nedefinuje.

Cursor.bindvars

tento atribut pouze pro čtení poskytuje proměnné vazby použité pro lastexecute. Hodnota bude buď seznam nebo slovník v závislosti nazda vazba byla provedena podle pozice nebo jména. Je třeba dbát na to, kdyžodkazování tohoto atributu. Zejména prvky by neměly být odstraňoványnebo vyměnit.

Poznámka

definice DB API tento atribut nedefinuje.

Cursor.callfunc(name, returnType, parameters=, keywordParameters= {}) volání funkce s daným názvem. Typ návratu je zadán ve stejné notaci, jak je požadovánosetinputsizes(). Thesekvence parametrů musí obsahovat jednu položku pro každý parametr, který thefunction očekává. Všechny parametry klíčových slov budou zahrnuty poziční parametry. Výsledkem volání je návratová hodnotafunkce.

viz PL / SQL uložené funkce pro příklad.

Poznámka

definice DB API tuto metodu nedefinuje.

Poznámka:

Pokud máte v úmyslu volání Cursor.setinputsizes() na cursorprior k tomu, aby tento hovor, pak na vědomí, že první položka v theparameter seznamu odkazuje vrácená hodnota funkce.

Cursor.callproc(name, parameters=, keywordParameters= {}) zavolejte proceduru s daným názvem. Sekvence parametrů musíobsahují jednu položku pro každý parametr, který postup očekává. Výsledkem hovoru je upravená kopie vstupní sekvence. Vstupní parametry jsou ponechány nedotčeny; výstupní a vstupní/výstupní parametry jsou nahrazeny novými hodnotami. Parametry klíčových slov budou zahrnuty poziční parametry a nejsou vráceny jako součást výstupní sekvence.

viz příklad uložených procedur PL/SQL.

Poznámka

definice DB API neumožňuje parametry klíčových slov.

Cursor.close()¶

Zavřete kurzor nyní, spíše než kdykoli __del__, se nazývá. Kurzorbude nepoužitelný od tohoto bodu vpřed; výjimka chyby bude zvýšena, pokud se pokusíte o jakoukoli operaci kurzorem.

Cursor.connection

tento atribut pouze pro čtení vrací odkaz na objekt připojení nakterý byl vytvořen kurzor.

Poznámka

tento atribut je rozšířením definice DB API, ale je uveden v PEP 249 jako volitelné rozšíření.

Cursor.description

tento atribut pouze pro čtení je posloupnost sekvencí 7 položek. Každá z těchto následků obsahuje informace popisující jeden sloupec výsledků: (name, type, display_size, internal_size, precision, scale, null_ok). Tento atribut nebude žádný pro operace, které nevracejí řádky nebo pokud kurzor ještě neměl operaci vyvolanou metodou execute().

typ bude jednou z konstant databázového typu definovaných na úrovni modulu.

Cursor.execute(příkaz, * * keywordParameters) provést příkaz proti databázi. Viz SQL Execution.

parametry mohou být předávány jako slovník nebo sekvence nebo jako klíčové slovo. Pokud jsou parametry slovníkem, hodnoty budou vázány jménem a pokud jsou parametry sekvencí, hodnoty budou vázány pozicí. Všimněte si, že pokud jsou hodnoty vázány pozicí, pořadí proměnných je zleva doprava, jak se vyskytují ve výkazu a příkazy SQL jsou zpracovávány jinak než příkazy PL/SQL. Z tohoto důvodu se obecně doporučuje vázat parametry podle názvu místo podle pozice.

parametry předané jako slovník jsou dvojice jmen a hodnot. Název mapsto název proměnné bind používaný příkazem a hodnota mapuje hodnotu thePython, kterou chcete vázat na tuto proměnnou bind.

odkaz na příkaz bude ponechán kurzorem. Pokud žádný nebo stejný objekt řetězce není předán znovu, kurzor provede thatstatement znovu bez provedení prepare nebo rebinding a redefining.To je nejúčinnější pro algoritmy, kde se používá stejný příkaz, alejsou k němu vázány různé parametry (mnohokrát). Všimněte si, že parametersthat nejsou předány v průběhu následné popravy udrží valuepassed v průběhu posledního provedení nich obsažených.

pro maximální účinnost při opakovaném použití příkazu je nejlepší použít metodusetinputsizes() k určení typů parametrů a velikostí předem; zejména, nikdo se předpokládá, že je řetězec oflength 1 takže všechny hodnoty, které jsou později vázány jako čísla nebo data zvýší TypeError výjimku.

je-li příkaz dotazem, vrátí se kurzor jako pohodlí pro programátor (takže jej lze použít přímo jako iterátor nad řádky v programu); jinak se vrátí None.

Poznámka

definice DB API nedefinuje návratovou hodnotu této metody.

Cursor.executemany(prohlášení, parametry, batcherrors=False, arraydmlrowcounts=False)¶

Připravit prohlášení pro výkon proti databázi a potom spustit itagainst všech parametr mapování nebo sekvence nalezené v sequenceparameters. Viz provádění dávkových výpisů a hromadné načítání.

příkaz je spravován stejným způsobem jako metoda execute(). Pokud velikost vyrovnávacích pamětí přidělených pro některý z nichparametry přesahují 2 GB, zobrazí se chyba “ DPI-1015: velikost pole <n> je příliš velká“, kde <n> se liší podle velikosti každého prvku přiděleného ve vyrovnávací paměti. Pokud se zobrazí tato chyba, snižte početprvky v parametrech sekvence.

Pokud neexistují žádné parametry, nebo parametry byly dříve vázány, počet iterací může být zadán jako celé číslo, místo toho, aby museli poskytnout seznam prázdný mapování nebo sekvence.

Když je pravda, že batcherrors parametr umožňuje dávkové chybová podporu withinOracle a zajišťuje, že hovor uspěje i v případě, že výjimka se konáve jeden nebo více sekvence parametrů. Chyby pak mohou být odstraněny pomocí getbatcherrors().

pokud je pravda, parametr arraydmlrowcounts povolí počty řádků DML, aby se po dokončení metody beretrieved z Oracle. Počty řádků mohou být načteny pomocí getarraydmlrowcounts().

parametr batcherrors i parametr arraydmlrowcounts mohou být pravdivé pouze při provádění příkazu insert, update, delete nebo merge; ve všech ostatních případech dojde k chybě.

Pro maximální účinnost, to je nejlepší použítsetinputsizes() metoda určit typy parametrů andsizes dopředu; zejména, Nikdo se předpokládá, že řetězec oflength 1, takže všechny hodnoty, které jsou později vázán jako čísla nebo data bude raisea TypeError výjimkou.

Cursor.executemanyprepared(numIters)¶

Spustit předem připravené a vázané prohlášení uvedené číslo několikrát. Proměnné, které jsou vázány, musí být již před uskutečněním tohoto volání nastaveny na požadovanou hodnotu. Tato metoda byla navržena pro případ, kdy je vyžadován optimální výkon, protože přichází na úkor kompatibility s DB API.

Poznámka

definice DB API tuto metodu nedefinuje.

zastaralé od verze 6.4: použijte executemany() místo toho s None pro statementargument a celé číslo pro argument parametrů.

Cursor.fetchall()¶

načíst všechny (zbývající) řádky výsledku dotazu a vrátit je jako seznamtuply. Pokud nejsou k dispozici žádné další řádky, vrátí se prázdný seznam. Všimněte si, že kurzor je arraysize atribut může mít vliv na výkon tuto operaci, jako vnitřně čte z databáze se provádí v batchescorresponding na arraysize.

výjimka je aktivována, pokud se předchozí volání execute()nepřinesly žádný výsledek nebo žádný hovor byl vydán.

viz Fetch metody pro příklad.

Cursor.fetchmany()¶

načíst další sadu řádků výsledku dotazu a vrátit seznam tuples.An prázdný seznam je vrácen, pokud nejsou k dispozici žádné další řádky. Všimněte si, že atribut arraysize společnosti cursor může ovlivnit výkon této operace.

počet řádků k načtení je určen parametrem. Pokud to není notgiven, atribut arraysize kurzoru určuje počet řádků, které mají být napadeny. Pokud je počet řádků, které lze načíst, menší než požadovaný počet, bude vráceno méně řádků.

výjimka je aktivována, pokud se předchozí volání execute()nepřinesly žádný výsledek nebo žádný hovor byl vydán.

viz Fetch metody pro příklad.

Cursor.fetchone()¶

Načíst další řádek sada výsledků dotazu, vrátí jediná n-tice nebo Nonewhen žádná další data je k dispozici.

výjimka je aktivována, pokud se předchozí volání execute()nepřinesly žádný výsledek nebo žádný hovor byl vydán.

viz Fetch metody pro příklad.

Cursor.fetchraw()¶

načíst další sadu řádků výsledku dotazu do interních vyrovnávací paměti definovaných proměnných kurzoru. Počet řádků skutečně načtenýje vrácen. Tato metoda byla navržena pro případ, kdy je vyžadován optimálnívýkon, protože přichází na úkor kompatibility s DB API.

výjimka je aktivována, pokud se předchozí volání execute()nepřinesly žádný výsledek nebo žádný hovor byl vydán.

Poznámka

definice DB API tuto metodu nedefinuje.

Cursor.fetchvars

Tento read-only atribut určuje seznam proměnných vytvořených pro poslední dotaz, který byl proveden na kurzor. Je třeba dbát na to, kdyžodkazování tohoto atributu. Zejména prvky by neměly být odstraňoványnebo vyměnit.

Poznámka

definice DB API tento atribut nedefinuje.

Cursor.getarraydmlrowcounts()¶

načíst počet řádků DML po volání na executemany()s povoleným arraydmlrowcounts. Toto vrátí seznam integerscorresponding na počet řádků ovlivněných příkazem DML pro každýelement pole prošel až executemany().

Poznámka

definice DB API tuto metodu nedefinuje a je dostupná pouze pro Oracle 12.1 a vyšší.

Cursor.getbatcherrors()¶

Načíst výjimky, které se konaly po voláníexecutemany() s batcherrors povoleno. Tím se vrátí seznam chybových objektů, jedna chyba pro každou iteraci, která selhala. Offsetlze určit při pohledu na atribut offset objektu chyby.

Poznámka

definice DB API tuto metodu nedefinuje.

Cursor.getimplicitresults()¶

Vrátí seznam kurzorů, které odpovídají implicitní výsledky dispozici z PL/SQL blok nebo postup bez použití VENKU refcursor parametry. Blok nebo procedura PL / SQL otevře kurzory a označí je pro návrat ke klientovi pomocí proceduredbms_sql.návrat_výsledek. Kurzory vrácené tímto způsobem by neměly býtuzavřené. Budou automaticky zavřeny nadřazeným kurzorem, když jeuzavřen. Zavření nadřazeného kurzoru zneplatní kurzory vrácené touto metodou.

novinka ve verzi 5.3.

Poznámka:

DB API definice nedefinuje tuto metodu, a to je onlyavailable pro Databáze Oracle 12.1 (klient i server musí být na úrovni nebo vyšší). To je nejvíce jako DB API metoda nextset(), butunlike, že metoda (která vyžaduje, aby další sadu výsledků overwritethe aktuální sadu výsledků), tato metoda vrací kurzory, které mohou befetched nezávisle na sobě.

Cursor.inputtypehandler

Toto čtení a zápis atribut určuje metody pro každou hodnotu, kterou isbound prohlášení popraven na kurzor a přepíše attributewith stejné jméno na připojení, pokud je uvedeno. Podpis metody ishandler(kurzoru, hodnota, arraysize) a návratová hodnota se očekává, že bude dat proměnné objekt nebo Nic, ve kterém případě, že je výchozí proměnná objekt budouvytvořen. Pokud tento atribut není žádný, použije se hodnota atributu se stejným názvem na připojení.

Poznámka

tento atribut je rozšířením definice DB API.

Cursor.__iter__()¶

vrátí kurzor sám, který má být použit jako iterátor.

Poznámka

tato metoda je rozšířením definice DB API, ale je uvedena v PEP 249 jako volitelné rozšíření.

Cursor.lastrowid

tento atribut pouze pro čtení vrací rowid posledního řádku upraveného thecursorem. Pokud poslední operací provedenou na nástroji nebyl změněn žádný řádek, vrátí se hodnota None.

novinka ve verzi 7.3.

Cursor.outputtypehandler

Toto čtení a zápis atribut určuje metoda zavolána pro každý sloupec, který je nutno stáhnout z tohoto kurzoru. Podpis metody ishandler(kurzor, jméno, defaultType, délka, přesnost, měřítko) a returnvalue se očekává, že bude variabilní objekt, nebo Žádný v takovém případě defaultvariable bude objekt vytvořen. Pokud tento atribut není žádný, použije se místo toho atribut se stejným názvem na připojení.

viz Změna načtených datových typů pomocí obslužných rutin výstupního typu.

Poznámka

tento atribut je rozšířením definice DB API.

Cursor.parse(prohlášení)¶

To může být použit k analyzovat prohlášení, aniž by ve skutečnosti spuštění (thisstep se provádí automaticky pomocí Oracle výpisu popraven).

Poznámka

definice DB API tuto metodu nedefinuje.

Poznámka

můžete analyzovat libovolný příkaz DML nebo DDL. Příkazy DDL jsou spuštěnyokamžitě a dochází k implikovanému odevzdání.

Cursor.prefetchrows

Tento read-write atribut může být použit k nastavení počtu řádků, které the ghost of nimbus Client library načte, když SELECT je popraven. Thisvalue může snížit počet kruhové cesty k databázi, která se musí načíst řádky, ale za cenu další paměti. Nastavení této hodnoty na 0může být užitečné, když musí být explicitně kontrolováno načasování načítání.

viz Tuning Fetch Performance Pro více informací.

Poznámka

definice DB API tuto metodu nedefinuje.

Cursor.prepare(příkaz)¶

to lze použít před voláním na execute() k definování prohlášení, které bude provedeno. Když je to hotovo, fáze přípravy nebude provedena, když je volání execute() provedeno s žádným nebo stejným objektem řetězce jako příkaz. Pokud je zadáno, bude prohlášení vráceno do mezipaměti příkazů s danou značkou. Další informace o mezipaměti příkazů naleznete v dokumentaci Oracle.

více informací viz ukládání do mezipaměti příkazů.

Poznámka

definice DB API tuto metodu nedefinuje.

Cursor.rowcount

Tento read-only atribut určuje počet řádků, které mají currentlybeen přitažené za vlasy od kurzoru (pro select), které mají beenaffected operace (insert, update, delete a mergestatements), nebo počet úspěšných exekucí prohlášení(pro PL/SQL).

Cursor.rowfactory

tento atribut čtení a zápisu určuje metodu volání pro každý řádek, který je odeslán z databáze. Obvykle je pro každý řádek vrácena n-tice, ale pokud je tento atribut nastaven, metoda je volána s n-tice, která by byla normálně vrácena, a výsledek metody je vrácenmísto toho.

viz Změna výsledků dotazu pomocí Rowfactories.

Poznámka

definice DB API tento atribut nedefinuje.

Cursor.scroll(hodnota=0, mode=“relativní“)¶

Přejděte kurzorem v sadu výsledků do nové polohy podle themode.

je-li režim „Relativní“ (výchozí hodnota), hodnota se bere jako offsetto aktuální pozici v sadě výsledků. Pokud je nastavena na hodnotu“ absolutní“, hodnotyuvádí absolutní cílovou pozici. Pokud je nastavena na“ první“, kurzor je umístěn v prvním řádku a pokud je nastaven na „poslední“, kurzor je nastaven na poslední řádek v sadě výsledků.

dojde k chybě, pokud je režim „relativní“ nebo „absolutní“ a scrolloperace umístí kurzor mimo sadu výsledků.

novinka ve verzi 5.3.

Poznámka

tato metoda je rozšířením definice DB API, ale je uvedena v PEP 249 jako volitelné rozšíření.

Cursor.scrollable

tento atribut boolean pro čtení a zápis určuje, zda může být kurzor převeden nebo ne. Ve výchozím nastavení kurzory nejsou rolovací, protože serverresources a doba odezvy jsou větší než nonscrollable kurzory. Tento atribut je zkontrolován a odpovídající režim nastaven v Oracle při volání metody execute().

novinka ve verzi 5.3.

Poznámka

definice DB API tento atribut nedefinuje.

Cursor.setinputsizes(*args, **keywordArgs)¶

To může být používán před volání execute(),callfunc() nebo callproc() predefinememory plochy pro provoz parametry. Každý parametr by měl být atype objekt odpovídající vstupu, který bude použit, nebo by měl být aninteger určující maximální délku parametru řetězce. Použijte keywordparametry při vázání podle názvu a pozičních parametrů při vázání byposition. Singleton Nikdo nemůže být použita jako parametr při usingpositional parametry naznačují, že žádný prostor by měl být vyhrazen pro thatposition.

Poznámka

pokud plánujete použít callfunc(), uvědomte si, že první parametr v seznamu odkazuje na návratovou hodnotu funkce.

Cursor.setoutputsize(velikost)¶

Tato metoda nedělá nic a je zachován pouze pro kompatibilitu s theDB API. Modul automaticky přiděluje tolik místa, kolik je potřeba k načtení dlouhých a dlouhých sloupců RAW (nebo CLOB jako řetězec a BLOB jako bajty).

Cursor.statement

tento atribut pouze pro čtení poskytuje objekt řetězce, který byl dříve připraven s prepare() nebo spuštěn sexecute().

Poznámka

definice DB API tento atribut nedefinuje.

Cursor.var(dataType)¶

Vytvořte proměnnou se zadanými charakteristikami. Tato metoda wasdesigned pro použití s PL/SQL in/out proměnných, kde délka nebo typecannot být určena automaticky z Pythonu objekt prošel v nebo foruse v vstupní a výstupní typ obslužné rutiny definované na kurzory nebo připojení.

parametr dataType určuje typ dat, která by měla být uložena v proměnné. To by mělo být jedním z databáze typ konstanty, DB API konstanty,typ objektu vráceného z metody Connection.gettype() nebo jedna z následujících Python typy:

Python Typ Typ Databáze
bool cx_Oracle.DB_TYPE_BOOLEAN
bajtů cx_Oracle.DB_TYPE_RAW
datetime.Datum cx_Oracle.DB_TYPE_DATE
datetime.datetime cx_Oracle.DB_TYPE_DATE
datetime.timedelta cx_Oracle.DB_TYPE_INTERVAL_DS
desetinná.Desetinná cx_Oracle.DB_TYPE_NUMBER
float cx_Oracle.DB_TYPE_NUMBER
int cx_Oracle.DB_TYPE_NUMBER
str cx_Oracle.DB_TYPE_VARCHAR

Velikost parametru určuje délku řetězce a syrové proměnných a isignored ve všech ostatních případech. Pokud není specifikováno pro proměnné řetězce a raw, použije se hodnota 4000.

parametr arraysize určuje počet prvků, které bude proměnná mít. Pokud není zadáno, použije se velikost pole bind (obvykle 1). Pokud je avariable vytvořen v obslužné rutině výstupního typu, měl by být tento parametr nastaven na velikost pole kurzoru.

parametry inconverter a outconverter určují metody používané pro převod hodnot do / z databáze. Více informací naleznete v oddíle o proměnných objektech.

typename parametr určuje název SQL typu objektu a musí bespecified při použití typu cx_Oracle.OBJECT pokud typ objectwas předán přímo jako první parametr.

parametr encodingErrors určuje, co se má stát při dekódování řetězců bajtů načtených z databáze do řetězců. Měla by to být jedna z hodnot uvedených v builtindecodefunkce.

Poznámka

definice DB API tuto metodu nedefinuje.