airflow.providers.oracle.hooks.oracle

Module Contents

Classes

OracleHook

Interact with Oracle SQL.

Attributes

PARAM_TYPES

airflow.providers.oracle.hooks.oracle.PARAM_TYPES[source]
class airflow.providers.oracle.hooks.oracle.OracleHook(*args, schema=None, **kwargs)[source]

Bases: airflow.hooks.dbapi.DbApiHook

Interact with Oracle SQL.

Parameters

oracle_conn_id -- The Oracle connection id used for Oracle credentials.

conn_name_attr = oracle_conn_id[source]
default_conn_name = oracle_default[source]
conn_type = oracle[source]
hook_name = Oracle[source]
supports_autocommit = True[source]
get_conn(self)[source]

Returns a oracle connection object Optional parameters for using a custom DSN connection (instead of using a server alias from tnsnames.ora) The dsn (data source name) is the TNS entry (from the Oracle names server or tnsnames.ora file) or is a string like the one returned from makedsn().

Parameters
  • dsn -- the data source name for the Oracle server

  • service_name -- the db_unique_name of the database that you are connecting to (CONNECT_DATA part of TNS)

  • sid -- Oracle System ID that identifies a particular database on a system

You can set these parameters in the extra fields of your connection as in

{
    "dsn": (
        "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)"
        "(HOST=host)(PORT=1521))(CONNECT_DATA=(SID=sid)))"
    )
}

see more param detail in cx_Oracle.connect

insert_rows(self, table, rows, target_fields=None, commit_every=1000, replace=False, **kwargs)[source]

A generic way to insert a set of tuples into a table, the whole set of inserts is treated as one transaction Changes from standard DbApiHook implementation:

  • Oracle SQL queries in cx_Oracle can not be terminated with a semicolon (;)

  • Replace NaN values with NULL using numpy.nan_to_num (not using is_nan() because of input types error for strings)

  • Coerce datetime cells to Oracle DATETIME format during insert

Parameters
  • table (str) -- target Oracle table, use dot notation to target a specific database

  • rows (List[tuple]) -- the rows to insert into the table

  • target_fields -- the names of the columns to fill in the table

  • commit_every (int) -- the maximum number of rows to insert in one transaction Default 1000, Set greater than 0. Set 1 to insert each row in each single transaction

  • replace (Optional[bool]) -- Whether to replace instead of insert

bulk_insert_rows(self, table, rows, target_fields=None, commit_every=5000)[source]

A performant bulk insert for cx_Oracle that uses prepared statements via executemany(). For best performance, pass in rows as an iterator.

Parameters
  • table (str) -- target Oracle table, use dot notation to target a specific database

  • rows (List[tuple]) -- the rows to insert into the table

  • target_fields (Optional[List[str]]) -- the names of the columns to fill in the table, default None. If None, each rows should have some order as table columns name

  • commit_every (int) -- the maximum number of rows to insert in one transaction Default 5000. Set greater than 0. Set 1 to insert each row in each transaction

callproc(self, identifier, autocommit=False, parameters=None)[source]

Call the stored procedure identified by the provided string.

Any 'OUT parameters' must be provided with a value of either the expected Python type (e.g., int) or an instance of that type.

The return value is a list or mapping that includes parameters in both directions; the actual return type depends on the type of the provided parameters argument.

See https://cx-oracle.readthedocs.io/en/latest/api_manual/cursor.html#Cursor.var for further reference.

test_connection(self)[source]

Tests the connection by executing a select 1 from dual query

Was this entry helpful?