# 14. Deprecations

The following tables contain all of the deprecations in the python-oracledb API, when they were first deprecated and a comment on what should be used instead, if applicable. The most recent deprecations are listed first.

Table 14.1 Deprecated in python-oracledb 1.0
Name | Comments
--- | ---
SessionPool class and use of cx_Oracle.SessionPool(). | Replace by the equivalent ConnectionPool Class. Use the new method `oracledb.create_pool()` to create connection pools.
`Connection.begin()` | Replace by the new Using Two-Phase Commits (TPC) functionality.
`Connection.prepare()` | Replace by the new Using Two-Phase Commits (TPC) functionality.
Parameters `encoding` and `nencoding` of the `oracledb.connect()`, `oracledb.create_pool()` and `oracledb.SessionPool()` methods | The encodings in use are always UTF-8.
Parameter `threaded` of the `oracledb.connect()` method | This was used to allow the Oracle Client libraries to support threaded applications. This value is ignored in python-oracledb because the threaded OCI is always enabled in the Thick mode, and the option is not relevant to the Thin mode. The equivalent parameter was already deprecated for cx_Oracle.SessionPool() in cx_Oracle 8.2.
Attribute `Connection.maxBytesPerCharacter` of the Connection object | This was previously deprecated. In python-oracledb 1.0 it will return a constant value of 4 since encodings are always UTF-8.
Size argument, `numRows` of the `Cursor.fetchmany()` method | Rename the parameter to `size`.
cx_Oracle.makedsn() | Pass the connection string components as connection creation, or pool creation, parameters. Or use a ConnectParams Class object.
oracledb.Connection() | This method is no longer recommended for creating connections. Use the equivalent function `oracledb.connect()` instead.
Attribute `Cursor.bindarraysize` of the Cursor object | Remove this attribute since it is no longer needed.
Constant `ATTR_PURITY_DEFAULT` | Replace by `PURITY_DEFAULT`.
Constant `ATTR_PURITY_NEW` | Replace by `PURITY_NEW`.
Constant `ATTR_PURITY_SELF` | Replace by `PURITY_SELF`.
Constant `SPOOL_ATTRVAL_WAIT` | Replace by `POOL_GETMODE_WAIT`.
Constant `SPOOL_ATTRVAL_NOWAIT` | Replace by `POOL_GETMODE_NOWAIT`.
Constant `SPOOL_ATTRVAL_FORCEGET` | Replace by `POOL_GETMODE_FORCEGET`.
Constant `SPOOL_ATTRVAL_TIMEDWAIT` | Replace by `POOL_GETMODE_TIMEDWAIT`.
Constant `DEFAULT_AUTH` | Replace by `AUTH_MODE_DEFAULT`.
Constant `SYSASM` | Replace by `AUTH_MODE_SYSASM`.
Constant `SYSBKP` | Replace by `AUTH_MODE_SYSBKP`.
Constant `SYSDBA` | Replace by `AUTH_MODE_SYSDBA`.
Constant `SYSDGD` | Replace by `AUTH_MODE_SYSDGD`.
Constant `SYSKMT` | Replace by `AUTH_MODE_SYSKMT`.
Constant `SYSOPER` | Replace by `AUTH_MODE_SYSOPER`.
Constant `SYSRAC` | Replace by `AUTH_MODE_SYSRAC`.
Constant `PRELIM_AUTH` | Replace by `AUTH_MODE_PRELIM`.
Constant `SUBSCR_PROTO_OCI` | Replace by `SUBSCR_PROTO_CALLBACK`.
Class name ObjectType | Replace by the equivalent DbObjectType.
Class name Object | Replace by the equivalent DbObject.

Many of the usages deprecated in cx_Oracle (see tables below) are still supported by python-oracledb to ease upgrade from cx_Oracle. However, these previous cx_Oracle deprecation announcements remain in force for python-oracledb. The relevant functionality may be removed in a future version of python-oracledb.

Some of the previous deprecations that have been removed and are not available in python-oracledb are listed below:

- The previously deprecated function Cursor.fetchraw() has been removed in python-oracledb. Use one of the other fetch methods such as `Cursor.fetchmany()` instead.

- The previously deprecated function Cursor.executemanyprepared() has been removed in python-oracledb. Use `Cursor.executemany()` instead.

- The previously deprecated function Cursor.rowcount() has been removed in python-oracledb. Use `Cursor.executemany()` instead.

- The previously deprecated Advanced Queuing (AQ) API has been removed in python-oracledb. Use the new AQ API instead. AQ is only available in the python-oracledb Thick mode.

  - Replace Connection.deq() with `Queue.deqone()` or `Queue.deqmany()`.

  - Replace Connection.deqoptions() with `Queue.deqoptions()`.

  - Replace Connection.enq() with `Queue.enqone()` or `Queue.enqmany()`.

  - Replace Connection.enqoptions() with `Queue.enqoptions()`.

Table 14.2 Deprecated in cx_Oracle 8.2
Name | Comments
--- | ---
`encoding` parameter to cx_Oracle.connect() | No longer needed as the use of encodings other than UTF-8 is deprecated. Encoding is handled internally between python-oracledb and Oracle Database.
`nencoding` parameter to cx_Oracle.connect() | No longer needed as the use of encodings other than UTF-8 is deprecated.
`encoding` parameter to cx_Oracle.SessionPool() | No longer needed as the use of encodings other than UTF-8 is deprecated.
`nencoding` parameter to cx_Oracle.SessionPool() | No longer needed as the use of encodings other than UTF-8 is deprecated.
Connection.maxBytesPerCharacter | No longer needed as the use of encodings other than UTF-8 is deprecated. The constant value 4 can be used instead.
Positional parameters to cx_Oracle.connect() | Replace with keyword parameters in order to comply with the Python database API.
Positional parameters to cx_Oracle.SessionPool() | Replace with keyword parameters in order to comply with the Python database API.
`threaded` parameter to cx_Oracle.SessionPool() | The value of this parameter is ignored. Threading is now always used.
`waitTimeout` parameter to cx_Oracle.SessionPool() | Replace with parameter name `wait_timeout`
`maxLifetimeSession` parameter to cx_Oracle.SessionPool() | Replace with parameter name `max_lifetime_session`
`sessionCallback` parameter to cx_Oracle.SessionPool() | Replace with parameter name `session_callback`
`maxSessionsPerShard` parameter to cx_Oracle.SessionPool() | Replace with parameter name `max_sessions_per_shard`
`SessionPool.tnsentry` | Replace with SessionPool.dsn
`payloadType` parameter to Connection.queue() | Replace with parameter name `payload_type` if using keyword parameters.
`ipAddress` parameter to Connection.subscribe() | Replace with parameter name `ip_address`
`groupingClass` parameter to Connection.subscribe() | Replace with parameter name `grouping_class`
`groupingValue` parameter to Connection.subscribe() | Replace with parameter name `grouping_value`
`groupingType` parameter to Connection.subscribe() | Replace with parameter name `grouping_type`
`clientInitiated` parameter to Connection.subscribe() | Replace with parameter name `client_initiated`
`Connection.callTimeout` | Replace with Connection.call_timeout
`Connection.tnsentry` | Replace with Connection.dsn
keywordParameters parameter to Cursor.callfunc() | Replace with parameter name `keyword_parameters`
`keywordParameters` parameter to Cursor.callproc() | Replace with parameter name `keyword_parameters`
`encodingErrors` parameter to Cursor.var() | Replace with parameter name `encoding_errors`
`Cursor.fetchraw()` | Replace with Cursor.fetchmany()
`newSize` parameter to LOB.trim() | Replace with parameter name `new_size`
`Queue.deqMany` | Replace with Queue.deqmany()
`Queue.deqOne` | Replace with Queue.deqone()
`Queue.enqMany` | Replace with Queue.enqmany()
`Queue.enqOne` | Replace with Queue.enqone()
`Queue.deqOptions` | Replace with Queue.deqoptions
`Queue.enqOptions` | Replace with Queue.enqoptions
`Queue.payloadType` | Replace with Queue.payload_type
`Subscription.ipAddress` | Replace with Subscription.ip_address
`Message.consumerName` | Replace with Message.consumer_name
`Message.queueName` | Replace with Message.queue_name
`Variable.actualElements` | Replace with Variable.actual_elements
`Variable.bufferSize` | Replace with Variable.buffer_size
`Variable.numElements` | Replace with Variable.num_elements

Table 14.3 Deprecated in cx_Oracle 8.0
Name | Comments
--- | ---
`cx_Oracle.BFILE` | Replace with cx_Oracle.DB_TYPE_BFILE
`cx_Oracle.BLOB` | Replace with cx_Oracle.DB_TYPE_BLOB
`cx_Oracle.BOOLEAN` | Replace with cx_Oracle.DB_TYPE_BOOLEAN
`cx_Oracle.CLOB` | Replace with cx_Oracle.DB_TYPE_CLOB
`cx_Oracle.CURSOR` | Replace with cx_Oracle.DB_TYPE_CURSOR
`cx_Oracle.FIXED_CHAR` | Replace with cx_Oracle.DB_TYPE_CHAR
`cx_Oracle.FIXED_NCHAR` | Replace with cx_Oracle.DB_TYPE_NCHAR
`cx_Oracle.INTERVAL` | Replace with cx_Oracle.DB_TYPE_INTERVAL_DS
`cx_Oracle.LONG_BINARY` | Replace with cx_Oracle.DB_TYPE_LONG_RAW
`cx_Oracle.LONG_STRING` | Replace with cx_Oracle.DB_TYPE_LONG
`cx_Oracle.NATIVE_FLOAT` | Replace with cx_Oracle.DB_TYPE_BINARY_DOUBLE
`cx_Oracle.NATIVE_INT` | Replace with cx_Oracle.DB_TYPE_BINARY_INTEGER
`cx_Oracle.NCHAR` | Replace with cx_Oracle.DB_TYPE_NVARCHAR
`cx_Oracle.NCLOB` | Replace with cx_Oracle.DB_TYPE_NCLOB
`cx_Oracle.OBJECT` | Replace with cx_Oracle.DB_TYPE_OBJECT
`cx_Oracle.TIMESTAMP` | Replace with cx_Oracle.DB_TYPE_TIMESTAMP

Table 14.4 Deprecated in cx_Oracle 7.2
Name | Comments
--- | ---
`Connection.deq()` | Replace with Queue.deqone() or Queue.deqmany().
`Connection.deqoptions()` | Replace with attribute Queue.deqoptions.
`Connection.enq()` | Replace with Queue.enqone() or Queue.enqmany().
`Connection.enqoptions()` | Replace with attribute Queue.enqoptions.

Table 14.5 Deprecated in cx_Oracle 6.4
Name | Comments
--- | ---
`Cursor.executemanyprepared()` | Replace with ~Cursor.executemany() with None for the statement argument and an integer for the parameters argument.