3. API: Connection Objects

3.1. Connection Class

class oracledb.Connection(dsn: str | None = None, *, pool: ConnectionPool | None = None, params: ConnectParams | None = None, **kwargs)

Constructor for creating a connection to the database.

A connection object should be created with oracledb.connect() or with ConnectionPool.acquire().

Note

Any outstanding database transaction will be rolled back when the connection object is destroyed or closed. You must perform a commit first if you want data to persist in the database, see Managing Transactions.

3.2. Connection Methods

Connection.__enter__()

The entry point for the connection as a context manager. It returns itself.

This method is an extension to the DB API definition.

Connection.__exit__(exc_type, exc_value, exc_tb)

The exit point for the connection as a context manager. This will close the connection and roll back any uncommitted transaction.

This method is an extension to the DB API definition.

Connection.begin(format_id: int = -1, transaction_id: str = '', branch_id: str = '') None

Explicitly begins a new transaction. Without parameters, this explicitly begins a local transaction; otherwise, this explicitly begins a distributed (global) transaction with the given parameters. See the Oracle documentation for more details.

Note that in order to make use of global (distributed) transactions, the internal_name and external_name attributes must be set.

Deprecated since 1.0.

Use the method tpc_begin() instead.

This method is an extension to the DB API definition.

Connection.begin_sessionless_transaction(transaction_id: str | bytes | None = None, timeout: int = 60, defer_round_trip: bool = False) bytes

Begins a new sessionless transaction. This method returns the transaction identifier specified by the user or generated by python-oracledb.

The transaction_id parameter should be of type string or bytes. If specified, it represents a unique identifier for the transaction. If a string is passed, then it will be UTF-8 encoded to bytes. If this value is not specified, then python-oracledb generates a a random universally-unique identifier (UUID) value. An example is “36b8f84d-df4e-4d49-b662-bcde71a8764f”. Any user-chosen value cannot exceed 64 bytes in length.

The timeout parameter is the number of seconds that this transaction can stay suspended when suspend_sessionless_transaction() is later called, or if the transaction is automatically suspended when the suspend_on_success parameter is set to to True in Cursor.execute() or Cursor.executemany(). The default value is 60 seconds. If a transaction is not resumed within this specified duration, the transaction will be rolled back.

The defer_round_trip parameter is a boolean that determines whether the request to start a transaction is to be sent immediately or with the next database operation. If set to False, the request is sent immediately. If set to True, the request is included with the next database operation on the connection. The default value is False.

See Sessionless Transactions.

Added in version 3.3.0.

Connection.cancel() None

Breaks a long-running statement.

This method is an extension to the DB API definition.

Connection.changepassword(old_password: str, new_password: str) None

Changes the password for the user to which the connection is connected.

This method is an extension to the DB API definition.

Connection.close() None

Closes the connection now and makes it unusable for further operations. An Error exception will be raised if any operation is attempted with this connection after this method is completed successfully.

All open cursors and LOBs created by the connection will be closed and will also no longer be usable.

Internally, references to the connection are held by cursor objects, LOB objects, subscription objects, etc. Once all of these references are released, the connection itself will be closed automatically. Either control references to these related objects carefully or explicitly close connections in order to ensure sufficient resources are available.

Connection.commit() None

Commits any pending transactions to the database.

Connection.createlob(lob_type: DbType, data: str | bytes | None = None) LOB

Creates and returns a new temporary LOB object of the specified type. The lob_type parameter should be one of oracledb.DB_TYPE_CLOB, oracledb.DB_TYPE_BLOB, or oracledb.DB_TYPE_NCLOB.

If data is supplied, it will be written to the temporary LOB before it is returned.

Changed in version 2.0: The parameter data was added.

This method is an extension to the DB API definition.

Connection.cursor(scrollable: bool = False) Cursor

Returns a new cursor object using the connection.

Connection.decode_oson(data: bytes) Any

Decodes OSON-encoded bytes and returns the object encoded in those bytes. This is useful for fetching columns which have the check constraint IS JSON FORMAT OSON enabled.

Added in version 2.1.0.

This method is an extension to the DB API definition.

Connection.direct_path_load(schema_name: str, table_name: str, column_names: list[str], data: Any, *, batch_size: int = 2**32 - 1) None

Load data into Oracle Database using the Direct Path Load interface. It is available only in python-oracledb Thin mode.

The data parameter can be a list of sequences, a DataFrame, or a third-party DataFrame instance that supports the Apache Arrow PyCapsule Interface.

The batch_size parameter is used to split large data sets into smaller pieces for sending to the database. It is the number of records in each batch. This parameter can be used to tune performance.

See Direct Path Loads.

Added in version 3.4.0.

This method is an extension to the DB API definition.

Connection.encode_oson(value: Any) bytes

Encodes a Python value into OSON-encoded bytes and returns them. This is useful for inserting into columns which have the check constraint IS JSON FORMAT OSON enabled.

Added in version 2.1.0.

This method is an extension to the DB API definition.

Connection.fetch_df_all(statement: str, parameters: list | tuple | dict | None = None, arraysize: int | None = None, *, fetch_decimals: bool | None = None, requested_schema: Any | None = None) DataFrame

Fetches all rows of the SQL query statement, returning them in a DataFrame object. An empty DataFrame is returned if there are no rows available.

The parameters parameter can be a list of tuples, where each tuple item maps to one bind variable placeholder in statement. It can also be a list of dictionaries, where the keys match the bind variable placeholder names in statement.

The arraysize parameter can be specified to tune performance of fetching data across the network. It defaults to oracledb.defaults.arraysize. Internally, the fetch_df_all()’s Cursor.prefetchrows size is always set to the value of the explicit or default arraysize parameter value.

The fetch_decimals parameter specifies whether to return decimal values when fetching columns of type NUMBER that are capable of being represented in Apache Arrow Decimal128 format. The default value is oracledb.defaults.fetch_decimals.

The requested_schema parameter specifies an object that implements the Apache Arrow PyCapsule schema interface. The DataFrame returned by fetch_df_all() will have the data types and names of the schema.

Any LOB fetched must be less than 1 GB.

See Working with Data Frames for the supported data types and examples.

This method is an extension to the DB API definition.

Changed in version 3.4.0: The fetch_decimals and requested_schema parameters were added.

Added in version 3.0.0.

Connection.fetch_df_batches(statement: str, parameters: list | tuple | dict | None = None, size: int | None = None, *, fetch_decimals: bool | None = None, requested_schema: Any | None = None) Iterator[DataFrame]

This returns an iterator yielding the next size rows of the SQL query statement in each iteration as a DataFrame object. An empty DataFrame is returned if there are no rows available.

The parameters parameter can be a list of tuples, where each tuple item maps to one bind variable placeholder in statement. It can also be a list of dictionaries, where the keys match the bind variable placeholder names in statement.

The size parameter controls the number of records fetched in each batch. It defaults to oracledb.defaults.arraysize. Internally, the fetch_df_batches()’s Cursor.arraysize and Cursor.prefetchrows sizes are always set to the value of the explicit or default size parameter value.

The fetch_decimals parameter specifies whether to return decimal values when fetching columns of type NUMBER that are capable of being represented in Apache Arrow Decimal128 format. The default value is oracledb.defaults.fetch_decimals.

The requested_schema parameter specifies an object that implements the Apache Arrow PyCapsule schema interface. The DataFrame returned by fetch_df_all() will have the data types and names of the schema.

Any LOB fetched must be less than 1 GB.

See Working with Data Frames for the supported data types and examples.

This method is an extension to the DB API definition.

Changed in version 3.4.0: The fetch_decimals and requested_schema parameters were added.

Added in version 3.0.0.

Connection.getSodaDatabase() SodaDatabase

Returns a SodaDatabase object for Simple Oracle Document Access (SODA). All SODA operations are performed either on the returned SodaDatabase object or from objects created by the returned SodaDatabase object. See here for additional information on SODA.

This method is an extension to the DB API definition.

Connection.gettype(name: str) DbObjectType

Returns a type object given its name. This can then be used to create objects which can be bound to cursors created by this connection.

This method is an extension to the DB API definition.

Connection.is_healthy() bool

This function returns a boolean indicating the health status of a connection.

Connections may become unusable in several cases, such as, if the network socket is broken, if an Oracle error indicates the connection is unusable, or, after receiving a planned down notification from the database.

This function is best used before starting a new database request on an existing standalone connections. For pooled connections, the ConnectionPool.acquire() method internally performs this check before returning a connection to the application, see Pool Connection Health.

If this function returns False, the connection should be not be used by the application and a new connection should be established instead.

This function performs a local check. To fully check a connection’s health, use ping() which performs a round-trip to the database.

This method is an extension to the DB API definition.

Connection.msgproperties(payload: bytes | str | DbObject | None = None, correlation: str | None = None, delay: int | None = None, exceptionq: str | None = None, expiration: int | None = None, priority: int | None = None, recipients: list | None = None) MessageProperties

Returns an object specifying the properties of messages used in advanced queuing.

Each of the parameters are optional. If specified, they act as a shortcut for setting each of the equivalently named properties.

This method is an extension to the DB API definition.

Connection.ping() None

Pings the database to verify if the connection is valid. An exception is thrown if it is not, in which case the connection should not be used by the application and a new connection should be established instead.

This function performs a round-trip to the database, so it should not be used unnecessarily.

Note connection pools will perform the same health check automatically, based on configuration settings. See Pool Connection Health.

Also, see is_healthy() for a lightweight alternative.

This method is an extension to the DB API definition.

Connection.prepare() bool

Prepares the distributed (global) transaction for commit. Returns a boolean indicating if a transaction was actually prepared in order to avoid the error ORA-24756 (transaction does not exist).

Deprecated since 1.0. Use the method :meth:`tpc_prepare()` instead..

This method is an extension to the DB API definition.

Connection.queue(name: str, payload_type: DbObjectType | str | None = None, *, payloadType: DbObjectType | None = None) Queue | AsyncQueue

Creates a queue which is used to enqueue and dequeue messages in Advanced Queuing.

The name parameter is expected to be a string identifying the queue in which messages are to be enqueued or dequeued.

The payload_type parameter, if specified, is expected to be an object type that identifies the type of payload the queue expects. If the string “JSON” is specified, JSON data is enqueued and dequeued. If not specified, RAW data is enqueued and dequeued.

For consistency and compliance with the PEP 8 naming style, the parameter payloadType was renamed to payload_type. The old name will continue to work as a keyword parameter for a period of time.

This method is an extension to the DB API definition.

Connection.resume_sessionless_transaction(transaction_id: str | bytes, timeout: int = 60, defer_round_trip: bool = False) bytes

Resumes an existing sessionless transaction using the specified transaction identifier. This method returns the transaction identifier used to resume the sessionless transaction.

The transaction_id parameter should be a string or bytes value that uniquely identifies an existing sessionless transaction that is to be resumed.

The timeout parameter is the number of seconds that the current connection waits to resume a transaction if another connection is using it. When defer_round_trip is set to False, the wait happens in the resume_sessionless_transaction() call itself, and the function blocks until the transaction becomes available or the timeout expires. When defer_round_trip is set to True, the resume is deferred and the wait occurs at the time of the next database operation instead. At the start of the wait period, if the transaction is not in use by any other connection, the resume happens immediately. If the transaction remains in use by the other connection after the timeout period, the error ORA-25351 is raised. If another connection completes the transaction, the error ORA-24756 is raised. These error messages are only thrown for non-RAC instances. For information on using Oracle RAC, see Sessionless Transactions with Oracle RAC. The default value is 60 seconds.

The defer_round_trip parameter is a boolean that determines whether the request to resume a transaction is to be sent immediately or with the next database operation. If set to False, the request is sent immediately. If set to True, the request is included with the next database operation on the connection. The default value is False.

See Sessionless Transactions.

Added in version 3.3.0.

Connection.rollback() None

Rolls back any pending transactions.

Connection.shutdown(mode: int = 0) None

Shuts down the database. In order to do this the connection must be connected as SYSDBA or SYSOPER. Two calls must be made unless the mode specified is DBSHUTDOWN_ABORT.

See Starting and Stopping Oracle Database.

This method is an extension to the DB API definition.

Connection.startup(force: bool = False, restrict: bool = False, pfile: str | None = None) None

Starts up the database. This is equivalent to the SQL*Plus command startup nomount. The connection must be connected as SYSDBA or SYSOPER with the PRELIM_AUTH option specified for this to work.

The pfile parameter, if specified, is expected to be a string identifying the location of the parameter file (PFILE) which will be used instead of the stored parameter file (SPFILE).

See Starting and Stopping Oracle Database.

This method is an extension to the DB API definition.

Connection.subscribe(namespace: int = oracledb.SUBSCR_NAMESPACE_DBCHANGE, protocol: int = oracledb.SUBSCR_PROTO_CALLBACK, callback: Callable | None = None, timeout: int = 0, operations: int = oracledb.OPCODE_ALLOPS, port: int = 0, qos: int = oracledb.SUBSCR_QOS_DEFAULT, ip_address: str | None = None, grouping_class: int = oracledb.SUBSCR_GROUPING_CLASS_NONE, grouping_value: int = 0, grouping_type: int = oracledb.SUBSCR_GROUPING_TYPE_SUMMARY, name: str | None = None, client_initiated: bool = False, *, ipAddress: str | None = None, groupingClass: int = oracledb.SUBSCR_GROUPING_CLASS_NONE, groupingValue: int = 0, groupingType: int = oracledb.SUBSCR_GROUPING_TYPE_SUMMARY, clientInitiated: bool = False) Subscription

Returns a new subscription object that receives notifications for events that take place in the database that match the given parameters.

The namespace parameter specifies the namespace the subscription uses. It can be one of oracledb.SUBSCR_NAMESPACE_DBCHANGE or oracledb.SUBSCR_NAMESPACE_AQ.

The protocol parameter specifies the protocol to use when notifications are sent. Currently the only valid value is oracledb.SUBSCR_PROTO_OCI.

The callback is expected to be a callable that accepts a single parameter. A message object is passed to this callback whenever a notification is received.

The timeout value specifies that the subscription expires after the given time in seconds. The default value of 0 indicates that the subscription never expires.

The operations parameter enables filtering of the messages that are sent (insert, update, delete). The default value will send notifications for all operations. This parameter is only used when the namespace is set to oracledb.SUBSCR_NAMESPACE_DBCHANGE.

The port parameter specifies the listening port for callback notifications from the database server. If not specified, an unused port will be selected by the Oracle Client libraries.

The qos parameter specifies quality of service options. It should be one or more of the following flags, OR’ed together: oracledb.SUBSCR_QOS_RELIABLE, oracledb.SUBSCR_QOS_DEREG_NFY, oracledb.SUBSCR_QOS_ROWIDS, oracledb.SUBSCR_QOS_QUERY, oracledb.SUBSCR_QOS_BEST_EFFORT.

The ip_address parameter specifies the IP address (IPv4 or IPv6) in standard string notation to bind for callback notifications from the database server. If not specified, the client IP address will be determined by the Oracle Client libraries.

The grouping_class parameter specifies what type of grouping of notifications should take place. Currently, if set, this value can only be set to the value oracledb.SUBSCR_GROUPING_CLASS_TIME, which will group notifications by the number of seconds specified in the grouping_value parameter. The grouping_type parameter should be one of the values oracledb.SUBSCR_GROUPING_TYPE_SUMMARY (the default) or oracledb.SUBSCR_GROUPING_TYPE_LAST.

The name parameter is used to identify the subscription and is specific to the selected namespace. If the namespace parameter is oracledb.SUBSCR_NAMESPACE_DBCHANGE then the name is optional and can be any value. If the namespace parameter is oracledb.SUBSCR_NAMESPACE_AQ, however, the name must be in the format ‘<QUEUE_NAME>’ for single consumer queues and ‘<QUEUE_NAME>:<CONSUMER_NAME>’ for multiple consumer queues, and identifies the queue that will be monitored for messages. The queue name may include the schema, if needed.

The client_initiated parameter is used to determine if client initiated connections or server initiated connections (the default) will be established. Client initiated connections are only available in Oracle Client 19.4 and Oracle Database 19.4 and higher.

For consistency and compliance with the PEP 8 naming style, the parameter ipAddress was renamed to ip_address, the parameter groupingClass was renamed to grouping_class, the parameter groupingValue was renamed to grouping_value, the parameter groupingType was renamed to grouping_type and the parameter clientInitiated was renamed to client_initiated. The old names will continue to work as keyword parameters for a period of time.

This method is an extension to the DB API definition.

Note

The subscription can be deregistered in the database by calling the function unsubscribe(). If this method is not called and the connection that was used to create the subscription is explicitly closed using the function close(), the subscription will not be deregistered in the database.

Connection.suspend_sessionless_transaction() None

Suspends the currently active sessionless transaction immediately.

This detaches the transaction from the connection, allowing it to be resumed later with the transaction identifier that was specified during creation of the sessionless transaction. The timeout previously passed to begin_sessionless_transaction() determines how long the transaction can stay suspended before it is automatically rolled back.

See Sessionless Transactions.

Added in version 3.3.0.

This method is an extension to the DB API definition.

Connection.tpc_begin(xid: Xid, flags: int = oracledb.TPC_BEGIN_NEW, timeout: int = 0) None

Begins a Two-Phase Commit (TPC) on a global transaction using the specified transaction identifier (xid).

The xid parameter should be an object returned by the xid() method.

The flags parameter is one of the constants oracledb.TPC_BEGIN_JOIN, oracledb.TPC_BEGIN_NEW, oracledb.TPC_BEGIN_PROMOTE, or oracledb.TPC_BEGIN_RESUME. The default is oracledb.TPC_BEGIN_NEW.

The timeout parameter is the number of seconds to wait for a transaction to become available for resumption when TPC_BEGIN_RESUME is specified in the flags parameter. When TPC_BEGIN_NEW is specified in the flags parameter, the timeout parameter indicates the number of seconds the transaction can be inactive before it is automatically terminated by the system. A transaction is inactive between the time it is detached with tpc_end() and the time it is resumed with tpc_begin().The default is 0 seconds.

The following code sample demonstrates the tpc_begin() function:

x = connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")
connection.tpc_begin(xid=x, flags=oracledb.TPC_BEGIN_NEW, timeout=30)

See Using Two-Phase Commits (TPC) for information on TPC.

Connection.tpc_commit(xid: Xid | None = None, one_phase: bool = False) None

Commits a global transaction. When called with no arguments, this method commits a transaction previously prepared with tpc_begin() and optionally prepared with tpc_prepare(). If tpc_prepare() is not called, a single phase commit is performed. A transaction manager may choose to do this if only a single resource is participating in the global transaction.

If an xid parameter is passed, then an object should be returned by the xid() function. This form should be called outside of a transaction and is intended for use in recovery.

The one_phase parameter is a boolean identifying whether to perform a one-phase or two-phase commit. If one_phase parameter is True, a single-phase commit is performed. The default value is False. This parameter is only examined if a value is provided for the xid parameter. Otherwise, the driver already knows whether tpc_prepare() was called for the transaction and whether a one-phase or two-phase commit is required.

The following code sample demonstrates the tpc_commit() function:

x = connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")
connection.tpc_commit(xid=x, one_phase=False)

See Using Two-Phase Commits (TPC) for information on TPC.

Connection.tpc_end(xid: Xid | None = None, flags: int = oracledb.TPC_END_NORMAL) None

Ends or suspends work on a global transaction. This function is only intended for use by transaction managers.

If an xid parameter is passed, then an object should be returned by the xid() function. If no xid parameter is passed, then the transaction identifier used by the previous tpc_begin() is used.

The flags parameter is one of the constants oracledb.TPC_END_NORMAL or oracledb.TPC_END_SUSPEND. The default is oracledb.TPC_END_NORMAL.

If the flag is oracledb.TPC_END_SUSPEND then the transaction may be resumed later by calling tpc_begin() with the flag oracledb.TPC_BEGIN_RESUME.

The following code sample demonstrates the tpc_end() function:

x = connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")
connection.tpc_end(xid=x, flags=oracledb.TPC_END_NORMAL)

See Using Two-Phase Commits (TPC) for information on TPC.

This method is an extension to the DB API definition.

Connection.tpc_forget(xid: Xid) None

Causes the database to forget a heuristically completed TPC transaction. This function is only intended to be called by transaction managers.

The xid parameter is mandatory and should be an object should be returned by the xid() function.

The following code sample demonstrates the tpc_forget() function:

x = connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")
connection.tpc_forget(xid=x)

See Using Two-Phase Commits (TPC) for information on TPC.

This method is an extension to the DB API definition.

Connection.tpc_prepare(xid: Xid | None = None) bool

Prepares a two-phase transaction for commit. After this function is called, no further activity should take place on this connection until either tpc_commit() or tpc_rollback() have been called.

Returns a boolean indicating whether a commit is needed or not. If you attempt to commit when not needed, then it results in the error ORA-24756: transaction does not exist.

If an xid parameter is passed, then an object should be returned by the xid() function. If an xid parameter is not passed, then the transaction identifier used by the previous tpc_begin() is used.

The following code sample demonstrates the tpc_prepare() function:

x = connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")
connection.tpc_prepare(xid=x)

See Using Two-Phase Commits (TPC) for information on TPC.

Connection.tpc_recover() list

Returns a list of pending transaction identifiers that require recovery. Objects of type Xid (as returned by the xid() function) are returned and these can be passed to tpc_commit() or tpc_rollback() as needed.

This function queries the DBA_PENDING_TRANSACTIONS view and requires “SELECT” privilege on that view.

The following code sample demonstrates the tpc_recover() function:

connection.tpc_recover()

See Using Two-Phase Commits (TPC) for information on TPC.

Connection.tpc_rollback(xid: Xid | None = None) None

If an xid parameter is not passed, then it rolls back the transaction that was previously started with tpc_begin().

If an xid parameter is passed, then an object should be returned by xid() and the specified transaction is rolled back. This form should be called outside of a transaction and is intended for use in recovery.

The following code sample demonstrates the tpc_rollback() function:

x = connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")
connection.tpc_rollback(xid=x)

See Using Two-Phase Commits (TPC) for information on TPC.

Connection.unsubscribe(subscr: Subscription) None

Unsubscribe from events in the database that were originally subscribed to using subscribe(). The connection used to unsubscribe should be the same one used to create the subscription, or should access the same database and be connected as the same user name.

This method is an extension to the DB API definition.

Connection.xid(format_id: int, global_transaction_id: bytes | str, branch_qualifier: bytes | str) Xid

Returns a global transaction identifier (xid) that can be used with the Two-Phase Commit (TPC) functions.

The xid contains a format identifier, a global transaction identifier, and a branch identifier. There are no checks performed at the Python level. The values are checked by ODPI-C when they are passed to the relevant functions. .. When this functionality is also supported in the thin driver the checks will be performed at the Python level as well.

The format_id parameter should be a positive 32-bit integer. This value identifies the format of the global_transaction_id and branch_qualifier parameters and the value is determined by the Transaction Manager (TM), if one is in use.

The global_transaction_id and branch_qualifier parameters should be of type bytes or string. If a value of type string is passed, then this value will be UTF-8 encoded to bytes. The values cannot exceed 64 bytes in length.

The following code sample demonstrates the xid() function:

connection.xid(format_id=1, global_transaction_id="tx1", branch_qualifier="br1")

See Using Two-Phase Commits (TPC) for information on TPC.

This method is an extension to the DB API definition.

3.3. Connection Attributes

property Connection.action: str

This write-only attribute sets the ACTION column in the V$SESSION view. It is a string attribute but the value None is accepted and treated as an empty string.

This attribute is an extension to the DB API definition.

property Connection.autocommit: bool

This read-write attribute determines whether autocommit mode is on or off. When autocommit mode is on, all statements are committed as soon as they have completed executing.

This attribute is an extension to the DB API definition.

property Connection.call_timeout: int

This read-write attribute specifies the amount of time (in milliseconds) that a single round-trip to the database may take before a timeout will occur. A value of 0 means that no timeout will take place.

In python-oracledb Thick mode, this attribute is only available in Oracle Client 18c or later.

If a timeout occurs, the error DPI-1067 will be returned if the connection is still usable. Alternatively the error DPI-1080 will be returned if the connection has become invalid and can no longer be used.

For consistency and compliance with the PEP 8 naming style, the attribute callTimeout was renamed to call_timeout. The old name will continue to work for a period of time. The error DPI-1080 was also introduced in this release.

This attribute is an extension to the DB API definition.

property Connection.client_identifier: str

This write-only attribute sets the CLIENT_IDENTIFIER column in the V$SESSION view.

This attribute is an extension to the DB API definition.

property Connection.clientinfo: str

This write-only attribute sets the CLIENT_INFO column in the V$SESSION view.

This attribute is an extension to the DB API definition.

property Connection.current_schema: str

This read-write attribute sets the current schema attribute for the session. Setting this value is the same as executing the SQL statement ALTER SESSION SET CURRENT_SCHEMA. The attribute is set (and verified) on the next call that does a round trip to the server. The value is placed before unqualified database objects in SQL statements you then execute.

This attribute is an extension to the DB API definition.

property Connection.db_domain: str

This read-only attribute specifies the Oracle Database domain name associated with the connection. It is the same value returned by the SQL SELECT value FROM V$PARAMETER WHERE NAME = 'db_domain'.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.db_name: str

This read-only attribute specifies the Oracle Database name associated with the connection. It is the same value returned by the SQL SELECT NAME FROM V$DATABASE.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.dbop: str

This write-only attribute sets the database operation that is to be monitored. This can be viewed in the DBOP_NAME column of the V$SQL_MONITOR view.

This attribute is an extension to the DB API definition.

property Connection.dsn: str

This read-only attribute returns the TNS entry of the database to which a connection has been established.

This attribute is an extension to the DB API definition.

property Connection.econtext_id: str

This write-only attribute specifies the execution context id. This value can be found as the ECID column in the V$SESSION view and ECONTEXT_ID in the auditing tables. The maximum length is 64 bytes.

This attribute is an extension to the DB API definition.

property Connection.edition: str

This read-only attribute gets the session edition and is only available with Oracle Database 11.2, or later.

This attribute is an extension to the DB API definition.

property Connection.external_name: str

This read-write attribute specifies the external name that is used by the connection when logging distributed transactions.

This attribute is an extension to the DB API definition.

property Connection.handle: int

This read-only attribute returns the Oracle Call Interface (OCI) service context handle for the connection. It is primarily provided to facilitate testing the creation of a connection using the OCI service context handle.

This property is only relevant to python-oracledb’s thick mode.

This attribute is an extension to the DB API definition.

property Connection.inputtypehandler: Callable

This read-write attribute specifies a method called for each value that is bound to a statement executed on any cursor associated with this connection. The method signature is handler(cursor, value, arraysize) and the return value is expected to be a variable object or None in which case a default variable object will be created. If this attribute is None, the default behavior will take place for all values bound to statements.

See Changing Bind Data Types using an Input Type Handler.

This attribute is an extension to the DB API definition.

property Connection.instance_name: str

This read-only attribute specifies the Oracle Database instance name associated with the connection. It is the same value as the SQL expression sys_context('userenv', 'instance_name').

This attribute is an extension to the DB API definition.

Added in version 1.4.0.

property Connection.internal_name: str

This read-write attribute specifies the internal name that is used by the connection when logging distributed transactions.

This attribute is an extension to the DB API definition.

property Connection.ltxid: bytes

This read-only attribute returns the logical transaction id for the connection. It is used within Oracle Transaction Guard as a means of ensuring that transactions are not duplicated. See Transaction Guard for more information.

This is only available with Oracle Database 12.1 or later. In python-oracledb Thick mode, it also requires Oracle Client libraries 12.1 or later.

This attribute is an extension to the DB API definition.

Changed in version 3.0.0: This attribute was added to python-oracledb Thin mode.

property Connection.max_identifier_length: int

This read-only attribute specifies the maximum database identifier length in bytes supported by the database to which the connection has been established. See Database Object Naming Rules. The value may be None, 30, or 128. The value None indicates the size cannot be reliably determined by python-oracledb, which occurs when using Thick mode with Oracle Client libraries 12.1 (or older) to connect to Oracle Database 12.2, or later.

This attribute is an extension to the DB API definition.

Added in version 2.5.0.

property Connection.max_open_cursors: int

This read-only attribute specifies the maximum number of cursors that the database can have open concurrently. It is the same value returned by the SQL SELECT VALUE FROM V$PARAMETER WHERE NAME = 'open_cursors'. When using python-oracledb Thick mode, Oracle Client libraries 12.1 (or later) are required.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.module: str

This write-only attribute sets the MODULE column in the V$SESSION view. The maximum length for this string is 48 and if you exceed this length you will get ORA-24960.

This attribute is an extension to the DB API definition.

property Connection.outputtypehandler: Callable

This read-write attribute specifies a method called for each column that is going to be fetched from any cursor associated with this connection. The method signature is handler(cursor, metadata) and the return value is expected to be a variable object or None in which case a default variable object will be created. If this attribute is None, the default behavior will take place for all columns fetched from cursors.

See Changing Fetched Data Types with Output Type Handlers.

Changed in version 1.4: The method signature was changed. The previous signature handler(cursor, name, default_type, length, precision, scale) will still work but is deprecated and will be removed in a future version.

This attribute is an extension to the DB API definition.

property Connection.proxy_user: str | None

This read-only attribute returns the name of the user which was used as a proxy when creating the connection to the database.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.sdu: int

This read-only attribute specifies the size of the Session Data Unit (SDU) that is being used by the connection. The value will be the lesser of the requested python-oracledb size and the maximum size allowed by the database network configuration. It is available only in python-oracledb Thin mode. To set the SDU in Thick mode, use a connection string SDU parameter or set a value for DEFAULT_SDU_SIZE in a sqlnet.ora configuration file.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.serial_num: int

This read-only attribute specifies the session serial number associated with the connection. It is the same value returned by the SQL SELECT SERIAL# FROM V$SESSION WHERE SID=SYS_CONTEXT('USERENV', 'SID'). It is available only in python-oracledb Thin mode.

For applications using Database Resident Connection Pooling (DRCP), the serial_num attribute may not contain the current session state until a round-trip is made to the database after acquiring a session. It is recommended to not use this attribute if your application uses DRCP but may not perform a round-trip.

This attribute is an extension to the DB API definition.

Added in version 2.5.0.

property Connection.service_name: str

This read-only attribute specifies the Oracle Database service name associated with the connection. This is the same value returned by the SQL SELECT SYS_CONTEXT('USERENV', 'SERVICE_NAME') FROM DUAL.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.session_id: int

This read-only attribute specifies the session identifier associated with the connection. It is the same value returned by the SQL SELECT SYS_CONTEXT('USERENV', 'SID') FROM DUAL. It is available only in python-oracledb Thin mode.

For applications using Database Resident Connection Pooling (DRCP), the session_id attribute may not contain the current session state until a round-trip is made to the database after acquiring a session. It is recommended to not use this attribute if your application uses DRCP but may not perform a round-trip.

This attribute is an extension to the DB API definition.

Added in version 2.5.0.

property Connection.stmtcachesize: int

This read-write attribute specifies the size of the statement cache. This value can make a significant difference in performance if you have a small number of statements that you execute repeatedly.

The default value is 20.

See Statement Caching for more information.

This attribute is an extension to the DB API definition.

property Connection.tag: str

This read-write attribute initially contains the actual tag of the session that was acquired from a pool by ConnectionPool.acquire(). If the connection was not acquired from a pool or no tagging parameters were specified (tag and matchanytag) when the connection was acquired from the pool, this value will be None. If the value is changed, it must be a string containing name=value pairs like “k1=v1;k2=v2”.

If this value is not None when the connection is released back to the pool it will be used to retag the session. This value can be overridden in the call to ConnectionPool.release().

This attribute is an extension to the DB API definition.

property Connection.thin: bool

This read-only attribute returns a boolean indicating if python-oracledb is in Thin mode (True) or Thick mode (False).

See Finding the python-oracledb Mode.

This attribute is an extension to the DB API definition.

property Connection.transaction_in_progress: bool

This read-only attribute specifies whether a transaction is currently in progress on the database associated with the connection.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.

property Connection.username: str

This read-only attribute returns the name of the user which established the connection to the database.

This read-only attribute returns the name of the user which established the connection to the database.

This attribute is an extension to the DB API definition.

property Connection.version: str

This read-only attribute returns the version of the database to which a connection has been established.

This read-only attribute returns the version of the database to which a connection has been established.

This attribute is an extension to the DB API definition.

Note

If you connect to Oracle Database 18 (or higher) in python-oracledb Thick mode using Oracle Client libraries 12.2 (or lower) you will only receive the base version (such as 18.0.0.0.0) instead of the full version (such as 18.3.0.0.0).

property Connection.warning: _Error | None

This read-only attribute provides an oracledb._Error object giving information about any database warnings (such as the password being in the grace period, or the pool being created with a smaller than requested size due to database resource restrictions) that were generated during connection establishment or by oracledb.create_pool(). The attribute will be present if there was a warning, but creation otherwise completed successfully. The connection will be usable despite the warning.

For standalone connections, Connection.warning will be present for the lifetime of the connection.

For pooled connections, Connection.warning will be cleared when a connection is released to the pool such as with ConnectionPool.release().

In python-oracledb Thick mode, warnings may be generated during pool creation itself. These warnings will be placed on new connections created by the pool, provided no warnings were generated by the individual connection creations, in which case those connection warnings will be returned.

If no warning was generated the value None is returned.

This attribute is an extension to the DB API definition.

Added in version 2.0.0.