obiect Cursor¶

Cursor.__enter__()¶

punctul de intrare pentru cursorul ca un manager de context. Se întoarce singură.

notă

această metodă este o extensie a definiției API DB.

Cursor.__exit__()¶

punctul de ieșire pentru cursorul ca un manager de context. Se închide cursorul.

notă

această metodă este o extensie a definiției API DB.

Cursor.arraysize

acest atribut de citire-scriere poate fi folosit pentru a regla numărul de rânduri internalfetched și tamponat de apeluri interne la baza de date atunci când preluarea rowsfrom selectați declarații și cursoare REF. Valoarea poate afecta drastic performanța unei interogări, deoarece afectează în mod direct numărul de călătorii networkround între Python și baza de date. Pentru metode precumfetchone() și fetchall() nu se schimbăcâte rânduri sunt returnate aplicației. Pentrufetchmany() este numărul implicit de rânduri de preluat.

datorită beneficiilor de performanță, valoarea implicită Cursor.arraysize este 100în loc de 1 pe care API-ul DB îl recomandă. Această valoare înseamnă că 100 de rândurisunt preluate de fiecare apel intern către baza de date.

consultați performanța de preluare a reglajului pentru mai multe informații.

Cursor.bindarraysize

acest atribut de citire-scriere specifică numărul de rânduri de legat la un moment datși este utilizat la crearea variabilelor prin setinputsizes() sauvar(). Este implicit la 1 sensul de a lega un singur rând la atime.

notă

definiția API DB nu definește acest atribut.

Cursor.arrayvar(datatype, value)

crearea unei variabile matrice asociate cu cursorul de tipul dat șidimensiune și să se întoarcă un obiect variabil. Valoarea este fie aninteger specificând numărul de elemente de alocat, fie este o listă, iar numărul de elemente alocate este extras din dimensiunea listei. Dacă valoarea este o listă, variabila este setată și cu conținutul listei. Dacădimensiunea nu este specificată și tipul este un șir sau binar, 4000 bytesis alocate. Acest lucru este necesar pentru trecerea matricelor la PL / SQL (în cazurile în care lista ar putea fi goală și tipul nu poate fi determinat automat) saureturnarea matricelor din PL/SQL.

variabilele matrice pot fi utilizate numai pentru matrice asociative PL/SQL cucontigue chei. Pentru tablourile asociative PL / SQL cu chei slab populate sau pentru varrays și tabele imbricate, trebuie utilizată abordarea prezentată în acest exemplu.

notă

definiția API DB nu definește această metodă.

Cursor.bindnames()¶

returnați lista numelor variabilelor de legare legate de instrucțiune. Rețineți că declarația trebuie să fi fost pregătită mai întâi.

notă

definiția API DB nu definește această metodă.

Cursor.bindvars

acest atribut numai în citire oferă variabilele de legare utilizate pentru lastexecute. Valoarea va fi fie o listă, fie un dicționar în funcție dedacă legarea a fost făcută prin poziție sau nume. Trebuie avut grijă cândreferind acest atribut. În special, elementele nu trebuie eliminatesau înlocuit.

notă

definiția API DB nu definește acest atribut.

Cursor.callfunc(name, returnType, parameters=, keywordParameters = {})

apel o funcție cu numele dat. Tipul de returnare este specificat înaceeași notație așa cum este cerută de setinputsizes(). Acestesecvență de parametri trebuie să conțină o intrare pentru fiecare parametru pe care îl așteaptă funcția. Orice parametri de cuvinte cheie vor fi incluși dupăparametrii poziționali. Rezultatul apelului este valoarea returnată afuncție.

a se vedea PL/SQL funcții stocate pentru un exemplu.

notă

definiția API DB nu definește această metodă.

notă

dacă intenționați să apelați Cursor.setinputsizes() pe cursorînainte de a efectua acest apel, rețineți că primul element dinlista de parametri se referă la valoarea returnată a funcției.

Cursor.callproc(name, parameters=, keywordParameters = {}) int

apelați o procedură cu numele dat. Secvența parametrilor trebuieconține o intrare pentru fiecare parametru pe care procedura îl așteaptă. Rezultatul apelului este o copie modificată a secvenței de intrare. Parametrii de intrare sunt lăsați neatinși; parametrii de ieșire și de intrare/ieșire sunt înlocuiți cu valori aparent noi. Parametrii cuvintelor cheie vor fi incluși dupăparametrii poziționali și nu sunt returnați ca parte a secvenței de ieșire.

consultați procedurile stocate PL/SQL pentru un exemplu.

notă

definiția API DB nu permite parametrii de cuvinte cheie.

Cursor.close()¶

închideți cursorul acum, mai degrabă decât ori de câte ori este apelat __del__. Cursorul va fi inutilizabil din acest punct înainte; o excepție de eroare va fi ridicatădacă se încearcă orice operație cu cursorul.

Cursor.connection

acest atribut numai în citire returnează o referință la obiectul de conectare pecare a fost creat cursorul.

notă

acest atribut este o extensie la definiția API DB, dar este menționată în Pep 249 ca o extensie opțională.

Cursor.description

acest atribut numai în citire este o secvență de secvențe de 7 elemente. Fiecare dintre aceste secvențe conține informații care descriu o coloană de rezultate: (Nume, Tip,display_size, internal_size, precizie, scară, null_ok). Acest atribut nu va fi niciunul pentru operațiile care nu returnează rânduri sau dacă cursorul nu a avut încă o operație invocată prin metoda execute().

tipul va fi unul dintre tipurile de baze de date constantsdefined la nivel de modul.

Cursor.execute(declarație, * * keywordParameters)

pentru a executa o declarație în baza de date. A se vedea executarea SQL.

parametrii pot fi transmise ca un dicționar sau secvență sau ca keywordparameters. Dacă parametrii sunt un dicționar, valorile vor fi legate byname și dacă parametrii sunt o secvență valorile vor fi legate byposition. Rețineți că, dacă valorile sunt legate de poziție, ordinea variabilelor este de la stânga la dreapta, deoarece acestea sunt întâlnite în Statement și instrucțiunile SQL sunt procesate diferit decât instrucțiunile PL/SQL. Din acest motiv, se recomandă, în general, legarea parametrilor după nume în loc de poziție.

parametrii trecuți ca dicționar sunt perechi de nume și valori. Numele mapsto numele variabilei bind utilizat de instrucțiunea și valoarea hărți la valoarea thePython pe care doriți legat la acea variabilă bind.

o referință la Declarație va fi reținută de cursor. Dacă nici unul sau același obiect șir este trecut din nou, cursorul va executa thatstatement din nou, fără a efectua o pregătire sau rebinding și redefinirea.Acest lucru este cel mai eficient pentru algoritmii în care se folosește aceeași afirmație, darparametrii diferiți sunt legați de acesta (de mai multe ori). Rețineți că parametrii care nu sunt trecuți în timpul execuțiilor ulterioare vor păstra valoareapassed in în timpul ultimei execuții care le conținea.

pentru eficiență maximă la reutilizarea unei instrucțiuni, este mai bine să utilizați metodasetinputsizes() pentru a specifica tipurile de parametri șidimensiuni înainte de timp; în special, niciuna nu se presupune a fi un șir de lungime 1, astfel încât orice valori care sunt ulterior legate ca numere sau date vor ridica o excepție TypeError.

dacă instrucțiunea este o interogare, cursorul este returnat ca o comoditate pentru thecaller (deci poate fi folosit direct ca un iterator peste rândurile din thecursor); în caz contrar, None este returnat.

notă

definiția API DB nu definește valoarea returnată a acestei metode.

Cursor.executemany(declarație, parametri, batcherrors=False, arraydmlrowcounts=False)

pregătiți o declarație pentru execuție împotriva unei baze de date și apoi executați-oîmpotriva tuturor mapărilor de parametri sau secvențelor găsite în secvențialeparametrii. A se vedea executarea declarație lot și încărcare în vrac.

instrucțiunea este gestionată în același mod în care metoda execute()o gestionează. Dacă dimensiunea tampoanelor alocate pentru oricare dintreparametrii depășesc 2 GB, veți primi eroarea ” DPI-1015: sizeof matrice <n> este prea mare”, unde <n> variază în funcție de dimensiunea fiecărui element fiindalocate în tampon. Dacă primiți această eroare, reduceți numărul deelemente din parametrii secvenței.

dacă nu există parametri sau parametrii au fost legați anterior, numărul de iterații poate fi specificat ca un număr întreg în loc să necesite furnizarea unei liste de mapări sau secvențe goale.

când este adevărat, parametrul batcherrors activează suportul pentru erori de lot în interiorul și asigură că apelul reușește chiar dacă are loc o excepție în una sau mai multe secvențe de parametri. Erorile pot apoi beretrieved folosind getbatcherrors().

când este adevărat, parametrul arraydmlrowcounts permite numărarea rândurilor DML la beretrieved de la Oracle după finalizarea metodei. Numărul de rânduri poate fi apoi recuperat folosind getarraydmlrowcounts().

atât parametrul batcherrors, cât și parametrul arraydmlrowcounts pot fi adevărate numai atunci când executați o instrucțiune insert, update, delete sau merge; în toatealte cazuri se va ridica o eroare.

pentru eficiență maximă, este mai bine să utilizați metodasetinputsizes() pentru a specifica tipurile de parametri și dimensiunile înainte de timp; în special, niciuna nu se presupune a fi un șir de lungime 1, astfel încât orice valori care sunt ulterior legate ca numere sau date vor ridica o excepție de eroare de tip.

Cursor.executemanyprepared(numiters)

execută declarația pregătită anterior și legată de numărul dat de ori. Variabilele care sunt legate trebuie să fi fost deja setate la valoarea dorită înainte de efectuarea acestui apel. Această metodă a fost proiectată pentrucaz în care este necesară o performanță optimă, deoarece vine în detrimentul compatibilității cu API-ul DB.

notă

definiția API DB nu definește această metodă.

depreciat de la versiunea 6.4: utilizați executemany() în schimb cu nici unul pentru statementargument și un număr întreg pentru argumentul parametrilor.

Cursor.fetchall()¶

Fetch toate rândurile (rămase) ale unui rezultat de interogare, returnându-le ca o listă dedupluri. O listă goală este returnată dacă nu mai sunt disponibile rânduri. Rețineți că atributul arraysize al cursorului poate afecta performanța acestei operații, deoarece citirile interne din Baza de date se fac în loturi corespunzătoare dimensiunii arraysize.

se ridică o excepție dacă apelul anterior la execute()nu a produs niciun set de rezultate sau nu a fost emis încă niciun apel.

a se vedea metode de preluare pentru un exemplu.

Cursor.fetchmany()¶

Fetch următorul set de rânduri de un rezultat de interogare, revenind o listă de tuples.An lista goală este returnată dacă nu mai sunt disponibile rânduri. Rețineți că atributul arraysize al curorului poate afecta performanța acestei operații.

numărul de rânduri de preluat este specificat de parametru. Dacă nu este dat, atributul arraysize al cursorului determină numărul de rânduri care urmează. Dacă numărul de rânduri disponibile pentru a fi preluate este mai mic decât numărul solicitat, vor fi returnate mai puține rânduri.

se ridică o excepție dacă apelul anterior la execute()nu a produs niciun set de rezultate sau nu a fost emis încă niciun apel.

a se vedea metode de preluare pentru un exemplu.

Cursor.fetchone()¶

Adu rândul următor al unui set de rezultate de interogare, returnând un singur tuplu sau Noncând nu mai sunt disponibile date.

se ridică o excepție dacă apelul anterior la execute()nu a produs niciun set de rezultate sau nu a fost emis încă niciun apel.

a se vedea metode de preluare pentru un exemplu.

Cursor.fetchraw()¶

aduceți următorul set de rânduri ale unui rezultat de interogare în tampoanele interne ale variabilelor definite pentru cursor. Numărul de rânduri preluate efectiveste returnat. Această metodă a fost concepută pentru cazul în care este necesară o performanță optimăeste necesară deoarece vine în detrimentul compatibilității cu API-ul DB.

se ridică o excepție dacă apelul anterior la execute()nu a produs niciun set de rezultate sau nu a fost emis încă niciun apel.

notă

definiția API DB nu definește această metodă.

Cursor.fetchvars

acest atribut numai în citire specifică lista variabilelor create pentruultima interogare care a fost executată pe cursor. Trebuie avut grijă cândreferind acest atribut. În special, elementele nu trebuie eliminatesau înlocuit.

notă

definiția API DB nu definește acest atribut.

Cursor.getarraydmlrowcounts()¶

preluați numărul de rânduri DML după un apel la executemany()cu arraydmlrowcounts activat. Aceasta va returna o listă de numere întregi corespunzătoare numărului de rânduri afectate de instrucțiunea DML pentru fiecare element al matricei trecut la executemany().

notă

definiția API DB nu definește această metodă și este disponibilă numai pentru Oracle 12.1 și versiuni ulterioare.

Cursor.getbatcherrors()¶

preluați excepțiile care au avut loc după un apel laexecutemany() cu batcherrors activat. Acest lucru va returna Alist de obiecte de eroare, o eroare pentru fiecare iterație care nu a reușit. Compensarea poate fi determinată prin analizarea atributului offset al obiectului de eroare.

notă

definiția API DB nu definește această metodă.

Cursor.getimplicitresults()¶

returnați o listă de cursoare care corespund rezultatelor implicite realizate dintr-un bloc sau procedură PL/SQL fără utilizarea parametrilor refcursor. Blocul sau procedura PL/SQL deschide cursoarele și le marchează pentru a reveni la client folosind proceduradbms_sql.return_result. Cursoarele returnate în acest mod nu ar trebui să fieînchis. Acestea vor fi închise automat de cursorul părinte atunci când este închis. Închiderea cursorului părinte va invalida cursoarele returnate deaceastă metodă.

nou în versiunea 5.3.

notă

definiția API DB nu definește această metodă și este disponibilă numai pentru Oracle Database 12.1 (atât clientul, cât și serverul trebuie să fie la acest nivel sau mai mare). Este cel mai mult ca metoda dB API nextset(), darîn afară de această metodă (care necesită ca următorul set de rezultate să suprascrie setul de rezultate curent), această metodă returnează cursoare care pot fi fixate independent unul de celălalt.

Cursor.inputtypehandler

acest atribut de citire-scriere specifică o metodă apelată pentru fiecare valoare care este legată de o instrucțiune executată pe cursor și înlocuiește atributul cu același nume pe conexiune, dacă este specificat. Metoda signature ishandler (cursor, value, arraysize) și valoarea returnată este de așteptat să fie obiect avariabil sau nici unul, caz în care va fi creat un obiect variabil implicit. Dacă acest atribut nu este unul, se utilizează valoarea atributului cuacelași nume pe conexiune.

notă

acest atribut este o extensie a definiției API DB.

Cursor.__iter__()¶

returnează cursorul în sine pentru a fi utilizat ca iterator.

notă

această metodă este o extensie la definiția API DB, dar este menționată în Pep 249 ca o extensie opțională.

Cursor.lastrowid

acest atribut numai în citire returnează rowid-ul ultimului rând modificat de thecursor. Dacă nici un rând nu a fost modificat de ultima operație efectuată pecursor, valoarea None este returnată.

nou în versiunea 7.3.

Cursor.outputtypehandler

acest atribut de citire-scriere specifică o metodă apelată pentru fiecare coloană care estepentru a fi preluat de la acest cursor. Metoda signature ishandler (cursor, name, defaultType, length, precision, scale) și returnvalue este de așteptat să fie un obiect variabil sau nici unul, caz în care va fi creat un obiect defaultvariable. Dacă acest atribut nu este unul, valoarea atributului cu același nume pe conexiune este utilizată în schimb.

consultați Modificarea tipurilor de date preluate cu manipulatoare de tip ieșire.

notă

acest atribut este o extensie a definiției API DB.

Cursor.parse(6587 > aceasta poate fi utilizată pentru a analiza o declarație fără a o executa efectiv (thisstep se face automat de Oracle atunci când o declarație este executată).

notă

definiția API DB nu definește această metodă.

notă

puteți analiza orice declarație DML sau DDL. Declarațiile DDL sunt executateimediat și are loc o comitere implicită.

Cursor.prefetchrows

acest atribut de citire-scriere poate fi folosit pentru a regla numărul de rânduri pe care biblioteca client theoracle le preia atunci când este executată o instrucțiune SELECT. Thisvalue poate reduce numărul de călătorii dus-întors la baza de date care sunt requiredto aduce rânduri, dar la costul de memorie suplimentară. Setarea acestei valori la 0 poate fi utilă atunci când calendarul preluărilor trebuie controlat în mod explicit.

consultați performanța de preluare a reglajului pentru mai multe informații.

notă

definiția API DB nu definește această metodă.

Cursor.prepare(declarație)

acest lucru poate fi folosit înainte de un apel la execute() pentru a defini thestatement care va fi executat. Când se face acest lucru, faza de pregătire nu va fi efectuată atunci când apelul la execute() se face withNone sau același obiect șir ca instrucțiunea. Dacă este specificatdeclarația va fi returnată în cache-ul de instrucțiuni cu eticheta dată. Consultați documentația Oracle pentru mai multe informații despre memoria cache a declarațiilor.

consultați memorarea în cache a declarațiilor pentru mai multe informații.

notă

definiția API DB nu definește această metodă.

Cursor.rowcount

acest atribut read-only specifică numărul de rânduri care au fost preluate din cursor (pentru instrucțiuni select), care au fost afectate de operație (pentru inserare, actualizare, ștergere și fuziuni) sau numărul de execuții reușite ale instrucțiunii(pentru instrucțiuni PL/SQL).

Cursor.rowfactory

acest atribut de citire-scriere specifică o metodă de apelare pentru fiecare rând care este retras din Baza de date. În mod obișnuit, un tuplu este returnat pentru fiecare rânddar dacă acest atribut este setat, metoda este apelată cu tuplu care ar fi returnat în mod normal, iar rezultatul metodei este returnatîn schimb.

consultați modificarea rezultatelor interogării cu Rowfactories.

notă

definiția API DB nu definește acest atribut.

Cursor.scroll(valoare=0, mod=” relativ”)

parcurgeți cursorul din setul de rezultate într-o poziție nouă în funcție demod.

dacă modul este „relativ” (valoarea implicită), valoarea este luată ca offsetto poziția curentă în setul de rezultate. Dacă este setat la” absolut”, valoarestatează o poziție țintă absolută. Dacă este setat la „primul”, cursorul estepoziționat la primul rând și dacă este setat la „ultimul”, cursorul este setat la ultimul rând din setul de rezultate.

o eroare este ridicată dacă modul este „relativ” sau „absolut” și scrolloperation ar poziționa cursorul în afara setului de rezultate.

nou în versiunea 5.3.

notă

această metodă este o extensie a definiției API DB, dar este menționată în Pep 249 ca o extensie opțională.

Cursor.scrollable

acest atribut Boolean de citire-scriere specifică dacă cursorul poate fiscrolled sau nu. În mod implicit, cursoare nu sunt derulabil, ca serverresursele și timpii de răspuns sunt mai mari decât cursoare nescrollable. Thisattribute este bifată și modul corespunzător setat în Oracle atunci când apelămetoda execute().

nou în versiunea 5.3.

notă

definiția API DB nu definește acest atribut.

Cursor.setinputsizes(*args, * * keywordArgs)

acest lucru poate fi folosit înainte de un apel la execute(),callfunc() sau callproc() Pentru a predefinimemorie zone pentru parametrii operațiunii. Fiecare parametru ar trebui să fie atype obiect corespunzător de intrare care va fi utilizat sau ar trebui să fie aninteger specificând lungimea maximă a unui parametru șir. Utilizați keywordparametrii când se leagă după nume și parametrii poziționali când se leagă byposition. Singleton None poate fi folosit ca parametru atunci când se utilizează parametri poziționali pentru a indica faptul că nu ar trebui rezervat spațiu pentru acea poziție.

notă

dacă intenționați să utilizați callfunc(), rețineți că primul parametru din listă se referă la valoarea returnată a funcției.

Cursor.setoutputsize(dimensiune)

această metodă nu face nimic și este reținută exclusiv pentru compatibilitatea cu API-ul theDB. Modulul alocă automat cât mai mult spațiu necesar pentru coloanele brute fetchLONG și LONG (sau CLOB ca șir și BLOB ca octeți).

Cursor.statement

acest atribut numai în citire furnizează obiectul șir care a fost anterior pregătit cu prepare()sau executat cuexecute().

notă

definiția API DB nu definește acest atribut.

Cursor.var(tip de date)

pentru a crea o variabilă cu caracteristicile specificate. Această metodă wasdesigned pentru utilizarea cu PL/SQL In / Out variabile în cazul în care lungimea sau typecannot fi determinate automat de obiect Python trecut în sau foruse în stivuitoare de tip de intrare și ieșire definite pe cursoare sau conexiuni.

parametrul dataType specifică tipul de date care trebuie stocate în variabilă. Aceasta ar trebui să fie una dintre constantele de tip bază de date, constantele API DB, un tip de obiect returnat din metoda Connection.gettype() sau unul dintre următoarele tipuri Python:

tip Python Tip bază de date
bool cx_Oracle.DB_TYPE_BOOLEAN
octeți cx_Oracle.DB_TYPE_RAW
datetime.data cx_Oracle.DB_TYPE_DATE
datetime.datetime cx_Oracle.DB_TYPE_DATE
datetime.timedelta cx_Oracle.DB_TYPE_INTERVAL_DS
zecimal.Zecimal cx_Oracle.DB_TYPE_NUMBER
float cx_Oracle.DB_TYPE_NUMBER
int cx_Oracle.DB_TYPE_NUMBER
str cx_Oracle.DB_TYPE_VARCHAR

parametrul dimensiune specifică lungimea șir și variabile brute și isignored în toate celelalte cazuri. Dacă nu este specificat pentru variabilele string și raw, se utilizează valoarea 4000.

parametrul arraysize specifică numărul de elemente pe care variabila le va avea. Dacă nu este specificat dimensiunea bind matrice (de obicei 1) este utilizat. Când avariable este creat într-un handler de tip de ieșire, acest parametru ar trebui să fie setat la dimensiunea matricei cursorului.

parametrii inconverter și outconverter specifică metodele utilizate pentru convertirea valorilor în/din Baza de date. Mai multe informații pot fi găsite însecțiunea despre obiecte variabile.

parametrul typename specifică numele unui tip de obiect SQL și trebuie să fie specificat atunci când se utilizează tipul cx_Oracle.OBJECT, cu excepția cazului în care obiectul de tip a fost transmis direct ca primul parametru.

parametrul encodingErrors specifică ce ar trebui să se întâmple atunci când decodingbyte strings preluate din Baza de date în șiruri. Ar trebui să fie una dintre valorile notate în indecodefuncția construită.

notă

definiția API DB nu definește această metodă.