airflow.providers.oracle.hooks.oracle¶
Module Contents¶
Classes¶
Interact with Oracle SQL. |
Attributes¶
- class airflow.providers.oracle.hooks.oracle.OracleHook(*args, schema=None, log_sql=True, **kwargs)[source]¶
Bases:
airflow.providers.common.sql.hooks.sql.DbApiHookInteract with Oracle SQL.
- Parameters
oracle_conn_id – The Oracle connection id used for Oracle credentials.
- 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 oracledb.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 oracledb 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 oracledb 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://python-oracledb.readthedocs.io/en/latest/api_manual/cursor.html#Cursor.var for further reference.