Markörobjekt¶

Cursor.__enter__()¶

ingångspunkten för markören som en kontexthanterare. Det återvänder sig själv.

Obs

denna metod är en förlängning till DB API definition.

Cursor.__exit__()¶

utgångspunkten för markören som en kontexthanterare. Den stänger markören.

Obs

denna metod är en förlängning till DB API definition.

Cursor.arraysize

detta läs-och skrivattribut kan användas för att ställa in antalet rader internallyfetched och buffras av interna samtal till databasen när du hämtar rowsfrom SELECT-satser och REF-markörer. Värdet kan drastiskt påverkaprestanda för en fråga eftersom det direkt påverkar antalet nätverkrundresor mellan Python och databasen. För metoder somfetchone() och fetchall() ändras intehur många rader returneras till applikationen. Förfetchmany() är det standardantalet rader som ska hämtas.

på grund av prestandafördelarna är standard Cursor.arraysize 100i stället för 1 som DB API rekommenderar. Detta värde betyder att 100 raderhämtas av varje internt samtal till databasen.

se inställning Hämta prestanda för mer information.

Cursor.bindarraysize

detta läs-och skrivattribut anger antalet rader som ska bindas åt gången och används när du skapar variabler via setinputsizes()ellervar(). Det är som standard 1 vilket betyder att binda en enda rad åt gången.

Obs

DB API-definitionen definierar inte detta attribut.

Cursor.arrayvar(6587 > skapa en matrisvariabel associerad med markören för den angivna typen ochstorlek och returnera ett variabelobjekt. Värdet är antingen eninteger som anger antalet element som ska allokeras eller det är en lista ochAntalet tilldelade element dras från listans storlek. Om värdet är en lista ställs variabeln också in med innehållet i listan. Omstorleken är inte specificerad och typen är en sträng eller binär, 4000 bytes allokeras. Detta behövs för att skicka arrayer till PL/SQL (i fall därlistan kan vara tom och typen kan inte bestämmas automatiskt) elleråtervända arrayer från PL / SQL.

Arrayvariabler kan endast användas för PL / SQL associativa arrayer medkontinuerliga nycklar. För PL / SQL associativa arrayer med glesbefolkade nycklareller för varrayer och kapslade tabeller måste metoden som visas i dettaexempel användas.

Obs

DB API-definitionen definierar inte denna metod.

Cursor.bindnames()¶

returnera listan över bindningsvariabelnamn som är bundna till uttalandet. Observera att astatement måste ha förberetts först.

Obs

DB API-definitionen definierar inte denna metod.

Cursor.bindvars

detta skrivskyddade attribut tillhandahåller bindningsvariablerna som används för lastexecute. Värdet kommer att vara antingen en lista eller en ordlista beroende påom bindning gjordes av position eller namn. Försiktighet bör vidtas närhänvisa till detta attribut. I synnerhet bör element inte tas borteller bytas ut.

Obs

DB API-definitionen definierar inte detta attribut.

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

anropa en funktion med det angivna namnet. Returtypen anges i samma notation som krävs av setinputsizes(). Sekvensen av parametrar måste innehålla en post för varje parameter som funktionen förväntar sig. Eventuella nyckelordsparametrar kommer att inkluderas efterpositionsparametrar. Resultatet av samtalet är returvärdet avfunktion.

se PL / SQL-lagrade funktioner för ett exempel.

Obs

DB API-definitionen definierar inte denna metod.

notera

om du tänker ringa Cursor.setinputsizes() på markörenprior för att ringa detta samtal, notera att det första objektet iparameterlistan hänvisar till funktionens returvärde.

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

anropa en procedur med det angivna namnet. Sekvensen av parametrar måsteinnehåller en post för varje parameter som proceduren förväntar sig. Resultatet av samtalet är en modifierad kopia av ingångssekvensen. Ingångsparametrar lämnas orörda; utgångs-och ingångs – /utgångsparametrar ersätts med möjligen nya värden. Nyckelordsparametrar kommer att inkluderas efterpositionsparametrar och returneras inte som en del av utmatningssekvensen.

se PL / SQL lagrade procedurer för ett exempel.

Obs

DB API-definitionen tillåter inte sökordsparametrar.

Cursor.close()¶

Stäng markören nu, snarare än när _ _ del _ _ anropas. Markörenkommer att vara oanvändbar från denna punkt framåt; ett Felundantag kommer att höjasom någon åtgärd försöks med markören.

Cursor.connection

detta skrivskyddade attribut returnerar en referens till anslutningsobjektet påsom markören skapades.

Obs

detta attribut är en förlängning till DB API definition men det nämns i PEP 249 som en valfri förlängning.

Cursor.description

detta skrivskyddade attribut är en sekvens av 7-punktssekvenser. Var och en av dessa sekvenser innehåller information som beskriver en resultatkolumn: (namn, typ,display_size, internal_size, precision, skala, null_ok). Detta attributewill vara ingen för operationer som inte returnerar rader eller om markören inte har haft en operation anropas via execute() metoden ännu.

typen kommer att vara en av databastypen konstanterdefinieras på modulnivå.

Cursor.execute(uttalande, **keywordParameters) 2587>utför ett uttalande mot databasen. Se SQL-utförande.

parametrar kan skickas som en ordlista eller sekvens eller som keywordparameters. Om parametrarna är en ordlista kommer värdena att bindas avnamn och om parametrarna är en sekvens kommer värdena att bindas avposition. Observera att om värdena är bundna av position, ordningen påvariabler är från vänster till höger som de påträffas i uttalandetoch SQL-satser behandlas annorlunda än PL/SQL-satser. Av denna anledning rekommenderas det i allmänhet att binda parametrar med namn istället för position.

parametrar som skickas som en ordbok är namn-och värdepar. Namnet mappartill bindningsvariabelnamnet som används av uttalandet och värdet mappartill det pytonvärde du önskar bundet till den bindningsvariabeln.

en hänvisning till uttalandet behålls av markören. Om inget eller samma strängobjekt skickas in igen, kommer markören att utföra det uttalandet igen utan att utföra en förberedelse eller återbindning och omdefiniering.Detta är mest effektivt för algoritmer där samma uttalande används, menolika parametrar är bundna till det (många gånger). Observera att parametrarsom inte skickas in under efterföljande avrättningar kommer att behålla värdet som passerade in under den senaste exekveringen som innehöll dem.

för maximal effektivitet vid återanvändning av ett uttalande är det bäst att använda metodensetinputsizes() för att ange parametertyperna ochstorlekar före tid; i synnerhet, ingen antas vara en sträng oflength 1 Så några värden som senare är bundna som siffror eller datum kommer raisea TypeError undantag.

om uttalandet är en fråga returneras markören som en bekvämlighet till thecaller (så den kan användas direkt som en iterator över raderna i thecursor); annars returneras None.

Obs

DB API-definitionen definierar inte returvärdet för denna metod.

Cursor.executemany(statement, parameters, batcherrors=False, arraydmlrowcounts=False) 6587>Förbered ett uttalande för körning mot en databas och kör sedan detmot alla parametermappningar eller sekvenser som finns i sequenceparameters. Se Batch uttalande utförande och Bulk lastning.

uttalandet hanteras på samma sätt som execute() – metoden hanterar det. Om storleken på buffertarna som tilldelats för någon avparametrarna överstiger 2 GB, får du felet ” DPI-1015: array sizeof <n> är för stor”, där <n> varierar med storleken på varje element som är allokerat i bufferten. Om du får det här felet, minska antaletelement i sekvensparametrarna.

om det inte finns några parametrar, eller parametrar har tidigare varit bundna, dåantal iterationer kan anges som ett heltal i stället för att behöva ge en lista med tomma mappningar eller sekvenser.

när det är sant, möjliggör batcherrors-parametern batchfelstöd withinOracle och säkerställer att samtalet lyckas även om ett undantag äger rumi en eller flera av parametersekvensen. Felen kan sedan beretrieved med getbatcherrors().

när det är sant, möjliggör parametern arraydmlrowcounts DML-radräkningar att beretrieved från Oracle efter att metoden har slutförts. Antalet rader kan sedan hämtas med getarraydmlrowcounts().

både batcherrors-parametern och arraydmlrowcounts-parametern kan onlybe true när du kör en insert, update, delete eller merge-sats; i alla andra fall kommer ett fel att uppstå.

för maximal effektivitet är det bäst att använda metodensetinputsizes() för att ange parametertyperna ochstorlekar före tid; i synnerhet antas ingen vara en sträng avlängd 1 så att alla värden som senare är bundna som siffror eller datum kommer att höjaett TypeError undantag.

Cursor.executemanyprepared(6587 > utför det tidigare beredda och bundna uttalandet det angivna antalet gånger. Variablerna som är bundna måste redan ha ställts in på derasönskat värde innan detta samtal görs. Denna metod utformades förfall där optimal prestanda krävs eftersom det kommer på bekostnad avkompatibilitet med DB API.

Obs

DB API-definitionen definierar inte denna metod.

föråldrad sedan version 6.4: använd executemany() istället med ingen för statementargument och ett heltal för parameterargumentet.

Cursor.fetchall()¶

hämta alla (återstående) rader av ett frågeresultat, returnera dem som en lista övertuples. En tom lista returneras om inga fler rader är tillgängliga. Observera att markörens arraysize-attribut kan påverka prestandan för dettaoperation, eftersom internt läsningar från databasen görs i batchersom motsvarar arraysize.

ett undantag höjs om det föregående samtalet till execute() inte gav någon resultatuppsättning eller inget samtal utfärdades ännu.

se hämta metoder för ett exempel.

Cursor.fetchmany()¶

Hämta nästa uppsättning rader i ett frågeresultat och returnera en lista med tuples.An tom lista returneras om inga fler rader är tillgängliga. Observera att thecursors arraysize-attribut kan påverka prestandan för denna operation.

antalet rader som ska hämtas anges av parametern. Om det inte är angivet bestämmer markörens arraysize-attribut antalet rader som ska befetched. Om antalet tillgängliga rader som ska hämtas är färre än det begärda beloppet returneras färre rader.

ett undantag höjs om det föregående samtalet till execute() inte gav någon resultatuppsättning eller inget samtal utfärdades ännu.

se hämta metoder för ett exempel.

Cursor.fetchone()¶

Hämta nästa rad i en frågeresultatuppsättning, returnera en enda tupel eller Nonewhen inga fler data är tillgängliga.

ett undantag höjs om det föregående samtalet till execute() inte gav någon resultatuppsättning eller inget samtal utfärdades ännu.

se hämta metoder för ett exempel.

Cursor.fetchraw()¶

Hämta nästa uppsättning rader av ett frågeresultat i de interna buffertarna avDe definierade variablerna för markören. Antalet rader som faktiskt hämtadesåtervänds. Denna metod var utformad för det fall där optimalprestanda krävs eftersom det kommer på bekostnad av kompatibilitet med DB API.

ett undantag höjs om det föregående samtalet till execute() inte gav någon resultatuppsättning eller inget samtal utfärdades ännu.

Obs

DB API-definitionen definierar inte denna metod.

Cursor.fetchvars

detta skrivskyddade attribut anger listan över variabler som skapats försenaste frågan som utfördes på markören. Försiktighet bör vidtas närhänvisa till detta attribut. I synnerhet bör element inte tas borteller bytas ut.

Obs

DB API-definitionen definierar inte detta attribut.

Cursor.getarraydmlrowcounts()¶

hämta DML rad räknas efter ett samtal till executemany() med arraydmlrowcounts aktiverat. Detta kommer att returnera en lista med heltal som motsvarar antalet rader som påverkas av DML-uttalandet för varje element i arrayen som skickas till executemany().

Obs

DB API-definitionen definierar inte denna metod och den är endast tillgänglig för Oracle 12.1 och senare.

Cursor.getbatcherrors()¶

hämta undantagen som ägde rum efter ett samtal tillexecutemany() med batcherrors aktiverat. Detta kommer att returnera alist av Felobjekt, ett fel för varje iteration som misslyckades. Offsetkan bestämmas genom att titta på offset-attributet för felobjektet.

Obs

DB API-definitionen definierar inte denna metod.

Cursor.getimplicitresults()¶

returnera en lista över markörer som motsvarar implicita resultat madeavailable från en PL / SQL block eller förfarande utan användning av ut refcursor parametrar. PL / SQL-blocket eller proceduren öppnar markörerna ochmarkerar dem för återgång till klienten med proceduredbms_sql.return_resultat. Markörer som returneras på detta sätt borde inte varastängt. De stängs automatiskt av modermarkören när den ärstängt. Om du stänger den överordnade markören ogiltigförklaras markörerna som returneras avdenna metod.

nytt i version 5.3.

OBS!

DB API-definitionen definierar inte den här metoden och den är endast tillgänglig för Oracle Database 12.1 (både klient och server måste vara på den här nivån eller högre). Det är mest som DB API-metoden nextset (), menTill skillnad från den metoden (som kräver att nästa resultatuppsättning skrivs överden aktuella resultatuppsättningen) returnerar denna metod markörer som kan vara oberoende av varandra.

Cursor.inputtypehandler

detta läs-och skrivattribut anger en metod som anropas för varje värde som är bunden till ett uttalande som körs på markören och åsidosätter attributet med samma namn på anslutningen om det anges. Metoden signatur ishandler (markör, värde, arraysize) och returvärdet förväntas vara avariable objekt eller ingen i vilket fall en standardvariabel objekt kommer becreated. Om det här attributet inte är något används värdet på attributet med samma namn på anslutningen.

Obs

detta attribut är ett tillägg till DB API-definitionen.

Cursor.__iter__()¶

returnerar markören själv som ska användas som en iterator.

Obs

denna metod är en förlängning till DB API definition men det nämns i PEP 249 som en valfri förlängning.

Cursor.lastrowid

detta skrivskyddade attribut returnerar rowid för den sista raden som modifierats av thecursor. Om ingen rad modifierades av den senaste åtgärden som utfördes påkursorn returneras värdet ingen.

nytt i version 7.3.

Cursor.outputtypehandler

detta läs-och skrivattribut anger en metod som anropas för varje kolumn som ska hämtas från den här markören. Metoden signatur ishandler (markör, namn, defaultType, längd, precision, skala) och return value förväntas vara ett variabelt objekt eller ingen i vilket fall ett defaultvariable objekt kommer att skapas. Om det här attributet inte är något, används värdet avattributet med samma namn på anslutningen istället.

se Ändra hämtade datatyper med hanterare av Utgångstyp.

Obs

detta attribut är ett tillägg till DB API-definitionen.

Cursor.parse(6587 > detta kan användas för att tolka ett uttalande utan att faktiskt köra det (detta steg görs automatiskt av Oracle när ett uttalande körs).

Obs

DB API-definitionen definierar inte denna metod.

Obs!

du kan tolka alla DML-eller DDL-uttalanden. DDL-uttalanden exekverasomedelbart och ett underförstått åtagande äger rum.

Cursor.prefetchrows

detta läs-och skrivattribut kan användas för att ställa in antalet rader som theOracle-klientbiblioteket hämtar när en SELECT-sats körs. Dettavärde kan minska antalet rundresor till databasen som krävsför att hämta rader men på bekostnad av ytterligare minne. Att ställa in detta värde till 0kan vara användbart när tidpunkten för hämtningar måste kontrolleras uttryckligen.

se inställning Hämta prestanda för mer information.

Obs

DB API-definitionen definierar inte denna metod.

Cursor.prepare(6587 > detta kan användas före ett anrop tillexecute()för att definiera det uttalande som ska utföras. När detta är gjort kommer förberedelsefasen inte att utföras när samtalet tillexecute()görs med ett eller samma strängobjekt som uttalandet. Om specificeratuttalande kommer att returneras till uttalandet cache med den angivna taggen. Se Oracle-dokumentationen för mer information om uttalandecachen.

se cachelagring för mer information.

Obs

DB API-definitionen definierar inte denna metod.

Cursor.rowcount

det här skrivskyddade attributet anger antalet rader som för närvarande har hämtats från markören (för select-satser), som har påverkats av åtgärden(för infoga, uppdatera, ta bort och sammanslagningsuttalanden) eller antalet framgångsrika körningar av satsen (för PL/SQL-satser).

Cursor.rowfactory

det här Läs-och skrivattributet anger en metod att anropa för varje rad som hämtas från databasen. Vanligtvis returneras en tupel för varje radmen om detta attribut är inställt kallas metoden med tupeln som normalt skulle returneras, och resultatet av metoden returneras istället.

se Ändra frågeresultat med Rowfactories.

Obs

DB API-definitionen definierar inte detta attribut.

Cursor.scroll(value = 0, mode=”relative”) 6587

scrolla markören i det resultat som ställts in till en ny position enligtläge.

om läget är ”relativt” (standardvärdet) tas värdet som en offsetto den aktuella positionen i resultatuppsättningen. Om det är inställt på ”absolut”, värdesätter en absolut målposition. Om den är inställd på ”första”, är markören placerad på den första raden och om den är inställd på ”sista”, är markören inställd på den sista raden i resultatuppsättningen.

ett fel uppstår om läget är ”relativt” eller ”absolut” och rullningsoperationen skulle placera markören utanför resultatuppsättningen.

nytt i version 5.3.

not

denna metod är en förlängning till DB API definition men det nämns i PEP 249 som en valfri förlängning.

Cursor.scrollable

detta läs-och skrivbooleska attribut anger om markören kan varaskrivas eller inte. Som standard är markörer inte rullbara, eftersom serverresurserna och svarstiderna är större än icke-rullbara markörer. Dettaattribut kontrolleras och motsvarande läge ställs in i Oracle när man anroparmetoden execute().

nytt i version 5.3.

Obs!

DB API-definitionen definierar inte detta attribut.

Cursor.setinputsizes(*args, * * keywordArgs)

detta kan användas före ett samtal till execute(),callfunc() eller callproc() för att fördefiniera områden för operationens parametrar. Varje parameter ska vara atype-objekt som motsvarar den ingång som ska användas eller det ska vara eninteger som anger den maximala längden på en strängparameter. Använd keywordparameters när du binder med namn och positionsparametrar när du binder byposition. Singleton None kan användas som en parameter vid användning avpositionsparametrar för att indikera att inget utrymme bör reserveras för den positionen.

Obs

om du planerar att använda callfunc() var då medveten om att den första parametern i listan hänvisar till funktionens returvärde.

Cursor.setoutputsize(6587 > denna metod gör ingenting och behålls enbart för kompatibilitet med theDB API. Modulen allokerar automatiskt så mycket utrymme som behövs för att hämta långa och långa RAW-kolumner (eller CLOB som sträng och BLOB som byte).Cursor.statement

detta skrivskyddade attribut tillhandahåller strängobjektet som tidigare var förberett med prepare()eller exekverat medexecute().

Obs

DB API-definitionen definierar inte detta attribut.

Cursor.var(datatype)

skapa en variabel med de angivna egenskaperna. Denna metod wasdesigned för användning med PL/SQL in / out variabler där längden eller typecannot bestämmas automatiskt från Python objektet passerade i eller foruse i input och output typ hanterare definieras på markörer eller anslutningar.

datatypsparametern anger vilken typ av data som ska lagras ivariabeln. Detta bör vara en avdatabas typ konstanter, DB API konstanter, en objekttyp returneras från metoden Connection.gettype() eller en av följande Python typer:

Python-Typ Databastyp
bool cx_Oracle.DB_TYPE_BOOLEAN
byte 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
decimal.Decimal cx_Oracle.DB_TYPE_NUMBER
float cx_Oracle.DB_TYPE_NUMBER
int cx_Oracle.DB_TYPE_NUMBER
str cx_Oracle.DB_TYPE_VARCHAR

storleksparametern anger längden på sträng-och råvariabler och isignoreras i alla andra fall. Om det inte anges för sträng-och raw-variabler används värdet 4000.

parametern arraysize anger antalet element som variabeln kommer att ha. Om det inte anges används bindningsmatrisstorleken (vanligtvis 1). När avariable skapas i en Utgångstyp hanterare denna parameter bör setto markörens matrisstorlek.

parametrarna inconverter och outconverter anger metoder som används forconverting värden till / från databasen. Mer information finns iavsnittet om variabla objekt.

parametern TypeName anger namnet på en SQL-objekttyp och måste specificeras när du använder Typ cx_Oracle.OBJECT om inte typen objectwas skickas direkt som den första parametern.

parametern encodingErrors anger vad som ska hända när avkodningsbyte-strängar hämtas från databasen till strängar. Det bör vara en avDe värden som noteras i builtindecodefunction.

Obs

DB API-definitionen definierar inte denna metod.