Cursorオブジェクト¶

Cursor.__enter__()¶

コンテキストマネージャとしてのカーソルのエントリポイント。 それは自分自身を返します。

このメソッドは、DB API定義の拡張機能です。

Cursor.__exit__()¶

コンテキストマネージャーとしてのカーソルの終了ポイント。 カーソルを閉じます。

このメソッドは、DB API定義の拡張機能です。

Cursor.arraysize

この読み書き属性を使用すると、SELECT文およびREFカーソルから行をフェッチするときに、データベースへの内部呼び出しによって内部フェッチおよびバッ この値は、Pythonとデータベース間のネットワーク巡回回数に直接影響するため、クエリのパフォーマンスに大幅に影響する可能性があります。 fetchone()fetchall()のようなメソッドでは、アプリケーションに返される行の数は変更されません。 fetchmany()の場合、これはフェッチする行のデフォルト数です。

パフォーマンス上の利点のため、デフォルトのCursor.arraysizeはDB APIが推奨する1の100insteadです。 この値は、データベースへの各内部呼び出しによって100行がフェッチされることを意味します。

詳細については、フェッチ性能のチューニングを参照してください。

Cursor.bindarraysize

この読み取り/書き込み属性は、setinputsizes()またはvar()を介して変数を作成するときに使用される、一度にバインドする行の数を指定します。 デフォルトは1で、atimeで単一の行をバインドすることを意味します。

DB API定義では、この属性は定義されていません。

Cursor.arrayvar(dataType,value)¶

指定された型andsizeのカーソルに関連付けられた配列変数を作成し、変数オブジェクトを返します。 値は、割り当てる要素の数を指定するanintegerか、リストであり、割り当てられた要素の数はリストのサイズから引き出されます。 Thevalueがリストの場合、変数にはリストの内容も設定されます。 サイズが指定されておらず、型が文字列またはバイナリの場合、4000バイトが割り当てられます。 これは、配列をPL/SQLに渡す場合(リストが空で、型が自動的に決定できない場合)、またはPL/SQLから配列を返す場合に必要です。

配列変数は、連続したキーを持つPL/SQL連想配列にのみ使用できます。 Varrayおよびネストされた表にまばらに移入されたキーサーを持つPL/SQL連想配列の場合は、この例に示す方法を使用する必要があります。

DB API定義では、このメソッドは定義されていません。

Cursor.bindnames()¶

文にバインドされたバインド変数名のリストを返します。 最初に準備されている必要があることに注意してください。

DB API定義では、このメソッドは定義されていません。

Cursor.bindvars

この読み取り専用属性は、lastexecuteに使用されるバインド変数を提供します。 値は、位置または名前によってバインドが行われたかどうかに応じて、リストまたは辞書のいずれかになります。 注意する必要がありますこの属性を参照する。 特に、要素は削除すべきではありませんまたは置き換えられます。

DB API定義では、この属性は定義されていません。

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

指定された名前の関数を呼び出します。 戻り値の型は、setinputsizes()で要求されるように同じ表記で指定されます。 パラメータのシーケンスには、関数が期待するパラメータごとに一つのエントリが含まれている必要があります。 任意のキーワードパラメータは、位置パラメータの後に含まれます。 呼び出しの結果は、関数の戻り値です。

例については、”PL/SQLストアドファンクション”を参照してください。

DB API定義では、このメソッドは定義されていません。

メモ

この呼び出しを行うためにcursorpriorでCursor.setinputsizes()を呼び出す場合は、parameterリストの最初の項目が関数の戻り値を参照していることに注意してください。

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

指定された名前のプロシージャを呼び出します。 パラメーターのシーケンスには、プロシージャが期待する各パラメーターのエントリが含まれている必要があります。 呼び出しの結果は、入力シーケンスの変更されたコピーです。 入力パラメータは変更されず、出力パラメータと入力/出力パラメータはおそらく新しい値に置き換えられます。 キーワードパラメータは、positionalパラメータの後に含まれ、出力シーケンスの一部として返されません。

例については、PL/SQLストアドプロシージャを参照してください。

DB API定義では、キーワードパラメータは許可されていません。

Cursor.close()¶

__del__が呼び出されるたびにではなく、今すぐカーソルを閉じます。 カーソルを使用した操作が試行された場合、エラー例外が発生します。

Cursor.connection

この読み取り専用属性は、カーソルが作成された接続オブジェクトへの参照を返します。

この属性はDB API定義の拡張機能ですが、pep249ではオプションの拡張機能として指定されています。

Cursor.description

この読み取り専用属性は、7項目のシーケンスのシーケンスです。 これらの各シーケンスには、1つの結果列(名前、タイプ、display_size、internal_size、precision、scale、null_ok)を記述する情報が含まれています。 このattributewillは、行を返さない操作、またはカーソルがexecute()メソッドを介して呼び出された操作をまだ持っていない場合はNoneになります。

型は、モジュールレベルで定義されたデータベース型constantsdefinedのいずれかになります。

Cursor.execute(statement,**keywordParameters)¶

データベースに対してステートメントを実行します。 “SQLの実行”を参照してください。

パラメータは、dictionaryまたはsequenceまたはkeywordparametersとして渡すことができます。 パラメータがディクショナリの場合、値はbynameでバインドされ、パラメータがシーケンスの場合、値はbypositionでバインドされます。 値が位置によってバインドされている場合、変数の順序は文で検出されるため左から右になり、SQL文はPL/SQL文とは異なる処理が行われることに注意 このため、一般的には、位置ではなく名前でパラメータをバインドすることをお勧めします。

ディクショナリとして渡されるパラメータは、名前と値のペアです。 名前はステートメントで使用されるバインド変数名にマップされ、値はそのバインド変数にバインドするpython値にマップされます。

ステートメントへの参照はカーソルによって保持されます。 Noneまたは同じstringオブジェクトが再び渡された場合、カーソルはprepareまたはrebindingおよび再定義を実行せずにthatstatementを再度実行します。これは、同じ文が使用されるアルゴリズムで最も効果的ですが、異なるパラメータがそれにバインドされます(何度も)。 後続の実行中に渡されないparametersthatは、それらを含んでいた最後の実行中に渡されたvaluepassedを保持することに注意してください。

ステートメントを再利用する際の効率を最大限に高めるには、setinputsizes()メソッドを使用してパラメータの型とサイズを事前に指定することをお勧めします; 特に、Noneは長さ1の文字列であると想定されるため、後で数値または日付としてバインドされる値はTypeError例外が発生します。

文がクエリの場合、カーソルはthecallerの便宜のために返されます(そのため、thecursorの行に対するイテレータとして直接使用できます)。

DB API定義では、このメソッドの戻り値は定義されていません。

Cursor.executemany(statement,parameters,batcherrors=False,arraydmlrowcounts=False)¶

データベースに対して実行するステートメントを準備し、sequenceparametersにあるすべてのパラメーターマッピングまたはシーケンスに対してitagainstを実行します。 “Batchステートメントの実行と一括読み込み”を参照してください。

ステートメントは、execute()メソッドが管理するのと同じ方法で管理されます。 いずれかのパラメータに割り当てられたバッファのサイズが2GBを超えると、”DPI-1015″というエラーが表示されます: 配列sizeof<n>is too large”、ここで<n>は、バッファ内で割り当てられる各要素のサイズによって異なります。 このエラーが発生した場合は、シーケンスパラメータの要素。

パラメータがない場合、またはパラメータが以前にバインドされている場合は、空のマッピングまたはシーケンスのリストを提供する代わりに、反復回数を整数として指定することができます。

trueの場合、batcherrorsパラメーターは、inoracle内でバッチエラーのサポートを有効にし、パラメーターのシーケンスのうちの一つ以上で例外が発生した場合でも、呼び出しが成功 エラーは、getbatcherrors()を使用してberetrievedすることができます。

trueの場合、arraydmlrowcountsパラメーターを使用すると、メソッドの完了後にDml行カウントをOracleからベレートできるようになります。 行数はgetarraydmlrowcounts()を使用して取得できます。

batcherrorsパラメーターとarraydmlrowcountsパラメーターの両方がtrueになるのは、insert、update、delete、またはmergeステートメントを実行する場合のみです; それ以外の場合は、エラーが発生します。

最大の効率を得るには、setinputsizes()メソッドを使用してパラメータの型とサイズを事前に指定することをお勧めします;特に、Noneは長さ1の文字列であると想定されるため、後に数値または日付としてバインドされた値はTypeError例外が発生します。

Cursor.executemanyprepared(numIters)¶

前に準備されたバインドされたステートメントを指定された回数だけ実行します。 バインドされている変数は、この呼び出しが行われる前に、すでにdesired値に設定されている必要があります。 このメソッドは、DB APIとの互換性を犠牲にして、最適なパフォーマンスが必要な場合のために設計されました。

DB API定義では、このメソッドは定義されていません。

バージョン6.4で非推奨:代わりにexecutemany()を使用し、statementargumentにはNone、parameters引数には整数を指定します。

Cursor.fetchall()¶

クエリ結果のすべての(残りの)行をフェッチし、それらをリストoftuplesとして返します。 使用可能な行がない場合は、空のリストが返されます。 カーソルのarraysize属性は、データベースからの内部読み取りがarraysizeに対応するbatchescorresponsingで行われるため、thisoperationのパフォーマンスに影響を与える可能性があることに注意してくださ

前のexecute()の呼び出しで結果セットが生成されなかった場合、または呼び出しがまだ発行されていない場合は例外が発生します。

例については、Fetchメソッドを参照してください。

Cursor.fetchmany()¶

クエリ結果の次の行のセットをフェッチし、次の行のリストを返します。tuples.An 使用可能な行がない場合は、空のリストが返されます。 Cursorのarraysize属性は、この操作のパフォーマンスに影響を与える可能性があることに注意してください。

フェッチする行の数は、パラメータで指定されます。 Notgivenの場合、カーソルのarraysize属性はフェッチされる行数を決定します。 フェッチ可能な行数が要求されたtheamountより少ない場合、返される行数は少なくなります。

前のexecute()の呼び出しで結果セットが生成されなかった場合、または呼び出しがまだ発行されていない場合は例外が発生します。

例については、Fetchメソッドを参照してください。

Cursor.fetchone()¶

クエリ結果セットの次の行をフェッチし、単一のタプルまたはそれ以上のデータが使用できない場合は、それ以外を返します。

前のexecute()の呼び出しで結果セットが生成されなかった場合、または呼び出しがまだ発行されていない場合は例外が発生します。

例については、Fetchメソッドを参照してください。

Cursor.fetchraw()¶

クエリ結果の次の行のセットを、カーソルの定義された変数の内部バッファにフェッチします。 実際にフェッチされた行の数が返されます。 このメソッドは、DB APIとの互換性を犠牲にしてoptimalperformanceが必要な場合のために設計されました。

前のexecute()の呼び出しで結果セットが生成されなかった場合、または呼び出しがまだ発行されていない場合は例外が発生します。

DB API定義では、このメソッドは定義されていません。

Cursor.fetchvars

この読み取り専用属性は、カーソル上で実行された最後のクエリ用に作成された変数のリストを指定します。 注意する必要がありますこの属性を参照する。 特に、要素は削除すべきではありませんまたは置き換えられます。

DB API定義では、この属性は定義されていません。

Cursor.getarraydmlrowcounts()¶

arraydmlrowcountsを有効にしてexecutemany()を呼び出した後のDML行カウントを取得します。 これにより、executemany()に渡された配列のeachelementに対するDMLステートメントの影響を受ける行数に対応するintegerscorresponsingのリストが返されます。

DB API定義ではこのメソッドは定義されておらず、Oracle12.1以降でのみ使用できます。

Cursor.getbatcherrors()¶

batcherrorsを有効にしてexecutemany()を呼び出した後に発生した例外を取得します。 これは、失敗した反復ごとに1つのエラーであるErrorオブジェクトのalistを返します。 オフセットは、エラーオブジェクトのoffset属性を調べることによって決定できます。

DB API定義では、このメソッドは定義されていません。

Cursor.getimplicitresults()¶

OUT refcursorパラメータを使用せずに、PL/SQLブロックまたはプロシージャから作成された暗黙的な結果に対応するカーソルのリストを返します。 PL/SQLブロックまたはプロシージャは、カーソルを開き、proceduredbms_sqlを使用してクライアントに戻るようにマークします。return_result. この方法で返されるカーソルは閉じてはいけません。 親カーソルが閉じられると、それらは親カーソルによって自動的に閉じられます。 親カーソルを閉じると、このメソッドによって返されたカーソルが無効になります。

バージョン5.3で追加。

注DB API定義ではこのメソッドは定義されておらず、Oracle Database12.1でのみ使用できます(クライアントとサーバーの両方がこのレベル以上である必要があります)。 これは、DB APIメソッドnextset()に最も似ていますが、そのメソッド(次の結果セットが現在の結果セットを上書きする必要があります)とは異なり、このメソッドは互いに独立してフェッチできるカーソルを返します。

Cursor.inputtypehandler

この読み書き属性は、カーソル上で実行されるステートメントにバインドされる各値に対して呼び出されるメソッドを指定し、指定されている場合は、接続上の同じ名前の属性をオーバーライドします。 メソッドシグネチャishandler(cursor,value,arraysize)と戻り値は、avariableオブジェクトまたはNoneであることが期待され、その場合、デフォルトの変数オブジェクトが作成されます。 この属性がNoneの場合、接続上の同じ名前を持つ属性の値が使用されます。

この属性は、DB API定義の拡張です。

Cursor.__iter__()¶

反復子として使用されるカーソル自体を返します。

このメソッドはDB API定義の拡張機能ですが、pep249ではオプションの拡張機能として指定されています。

Cursor.lastrowid

この読み取り専用属性は、thecursorによって変更された最後の行のrowidを返します。 Thecursorで最後に実行された操作によって行が変更されなかった場合は、値Noneが返されます。

バージョン7.3で追加。

Cursor.outputtypehandler

この読み取り/書き込み属性は、このカーソルからフェッチされる各列に対して呼び出されるメソッドを指定します。 メソッドシグネチャishandler(cursor,name,defaultType,length,precision,scale)とreturnvalueは、変数オブジェクトまたはNoneであることが期待され、その場合、defaultvariableオブジェクトが作成されます。 この属性がNoneの場合、接続上で同じ名前の属性の値が代わりに使用されます。

出力型ハンドラを使用したフェッチされたデータ型の変更を参照してください。

この属性は、DB API定義の拡張です。

Cursor.parse(文)¶

これは、実際に実行せずに文を解析するために使用できます(文が実行されると、このステップはOracleによって自動的に実行されます)。

DB API定義では、このメソッドは定義されていません。

任意のDML文またはDDL文を解析できます。 DDLステートメントはすぐに実行され、暗黙のコミットが行われます。

Cursor.prefetchrows

この読み書き属性は、SELECT文が実行されたときにtheOracleクライアントライブラリがフェッチする行数を調整するために使用できます。 Thisvalueは、行をフェッチするために必要なデータベースへのラウンドトリップの数を減らすことができますが、追加のメモリを犠牲にします。 この値を0に設定すると、フェッチのタイミングを明示的に制御する必要がある場合に便利です。

詳細については、フェッチ性能のチューニングを参照してください。

DB API定義では、このメソッドは定義されていません。

Cursor.prepare(ステートメント)¶

これは、実行されるステートメントを定義するためにexecute()を呼び出す前に使用できます。 これが行われると、execute()への呼び出しが文と同じstringオブジェクトで行われたときに、準備フェーズは実行されません。 指定された場合、指定されたタグを使用してステートメントキャッシュに返されます。 文キャッシュの詳細については、Oracleのドキュメントを参照してください。

詳細については、ステートメントのキャッシュを参照してください。

DB API定義では、このメソッドは定義されていません。

Cursor.rowcount

この読取り専用属性は、カーソルからcurrentlybeenフェッチされた行の数(select文の場合)、操作によって影響を受けた行の数(insert、update、deleteおよびmergestatementsの場合)、または文の正常な実行の数(PL/SQL文の場合)を指定します。

Cursor.rowfactory

この読み取り/書き込み属性は、データベースからisretrieved各行に対して呼び出すメソッドを指定します。 通常、各rowbutに対してタプルが返されますが、この属性が設定されている場合、通常返されるタプルでメソッドが呼び出され、メソッドの結果がreturnedinsteadにな

Rowfactoriesを使用したクエリ結果の変更を参照してください。

DB API定義では、この属性は定義されていません。

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

結果セット内のカーソルをthemodeに従って新しい位置にスクロールします。

modeが”relative”(デフォルト値)の場合、値は結果セット内の現在位置のオフセットとして取得されます。 “Absolute”に設定されている場合、valuestatesは絶対的な目標位置を設定します。 “First”に設定されている場合、カーソルは最初の行に配置され、”last”に設定されている場合、カーソルは結果セットの最後の行に設定されます。

モードが”relative”または”absolute”であり、scrolloperationがカーソルを結果セットの外側に配置する場合、エラーが発生します。

バージョン5.3で追加。

このメソッドはDB API定義の拡張ですが、pep249ではオプションの拡張機能として指定されています。

Cursor.scrollable

この読み取り/書き込みブール属性は、カーソルがスクロールできるかどうかを指定します。 既定では、serverresourcesと応答時間はスクロールできないカーソルよりも大きいため、カーソルはスクロールできません。 メソッドexecute()を呼び出すときに、Thisattributeがチェックされ、対応するモードがOracleで設定されます。

バージョン5.3で追加。

注DB API定義では、この属性は定義されていません。

Cursor.setinputsizes(*これはexecute()callfunc()、またはcallproc()の呼び出しの前に使用して、操作のパラメータのメモリ領域を事前定義できます。 各パラメータは、使用される入力に対応するatypeオブジェクトであるか、文字列パラメータの最大長を指定するanintegerである必要があります。 名前でバインドする場合はkeywordparametersを使用し、バイポジションをバインドする場合は位置パラメータを使用します。 Singleton Noneは、位置パラメータを使用するときにパラメータとして使用して、その位置のためにスペースを予約する必要がないことを示すことができます。

callfunc()を使用する場合は、リスト内の最初のパラメータが関数の戻り値を参照することに注意してください。

Cursor.setoutputsize(size)¶

このメソッドは何もせず、db APIとの互換性のためだけに保持されます。 このモジュールは、fetchLONGおよびLONG RAW列(またはCLOBを文字列として、BLOBをバイトとして)に必要な領域を自動的に割り当てます。

Cursor.statement

この読み取り専用属性は、prepare()で以前に準備された文字列オブジェクト、またはexecute()で実行された文字列オブジェクトを提供します。

DB API定義では、この属性は定義されていません。

Cursor.var(データ型)¶

指定された特性を持つ変数を作成します。 このメソッドは、渡されたPythonオブジェクトから長さまたは型が自動的に決定されないPL/SQL in/out変数で使用するために設計されています。

dataTypeパラメーターは、変数に格納するデータの型を指定します。 これは、データベース型定数、DB API定数、メソッドConnection.gettype()から返されるオブジェクト型、または次のPython型のいずれかである必要があります:

Pythonタイプ データベースタイプ
bool(ブーール) cx_Oracle.DB_TYPE_BOOLEAN
バイト cx_Oracle.DB_TYPE_RAW
——-日付 cx_Oracle.DB_TYPE_DATE
——-日時 cx_Oracle.DB_TYPE_DATE
——-タイムデルタ cx_Oracle.DB_TYPE_INTERVAL_DS
十進法。十進法 cx_Oracle.DB_TYPE_NUMBER
フロート cx_Oracle.DB_TYPE_NUMBER
int cx_Oracle.DB_TYPE_NUMBER
str cx_Oracle.DB_TYPE_VARCHAR

sizeパラメーターは、文字列と生の変数の長さを指定し、それ以外のすべての場合にはisignoredします。 String変数とraw変数に指定されていない場合は、値4000が使用されます。

arraysizeパラメーターは、変数が保持する要素の数を指定します。 指定されていない場合は、バインド配列のサイズ(通常は1)が使用されます。 出力型ハンドラーでavariableが作成される場合、このパラメータはカーソルの配列サイズに設定する必要があります。

inconverterパラメーターとoutconverterパラメーターは、データベースとの間で値を変換するために使用されるメソッドを指定します。 より多くの情報は、変数オブジェクトのセクション。

typenameパラメーターは、SQLオブジェクト型の名前を指定し、typecx_Oracle.OBJECTを使用する場合は、type objectwasが最初のパラメーターとして直接渡されない限り、指定する必要があります。

encodingErrorsパラメーターは、データベースから文字列にフェッチされたdecodingbyte文字列をどのように処理するかを指定します。 これは、builtindecodefunctionに記載されている値のいずれかである必要があります。

DB API定義では、このメソッドは定義されていません。