airflow.providers.oracle.hooks.oracle

属性

DEFAULT_DB_PORT

PARAM_TYPES

OracleHook

与 Oracle SQL 交互。

模块内容

airflow.providers.oracle.hooks.oracle.DEFAULT_DB_PORT = 1521[源码]
airflow.providers.oracle.hooks.oracle.PARAM_TYPES[源码]
class airflow.providers.oracle.hooks.oracle.OracleHook(*args, thick_mode=None, thick_mode_lib_dir=None, thick_mode_config_dir=None, fetch_decimals=None, fetch_lobs=None, **kwargs)[源码]

基类: airflow.providers.common.sql.hooks.sql.DbApiHook

与 Oracle SQL 交互。

参数:
  • oracle_conn_id – 用于 Oracle 凭据的 Oracle 连接 ID

  • thick_mode (bool | None) – 指定是否在厚模式下使用 python-oracledb。默认为 False。如果设置为 True,则必须安装 Oracle 客户端库。更多信息请参见 oracledb 文档<https://python-oracledb.readthedocs.io/en/latest/user_guide/initialization.html>

  • thick_mode_lib_dir (str | None) – 在厚模式下用于查找 Oracle 客户端库的路径。如果未指定,默认为操作系统上定位 Oracle 客户端库的标准方式。更多信息请参见 oracledb 文档 <https://python-oracledb.readthedocs.io/en/latest/user_guide/initialization.html#setting-the-oracle-client-library-directory>

  • thick_mode_config_dir (str | None) – 在厚模式下用于查找 Oracle 客户端库配置文件的路径。如果未指定,默认为操作系统上定位 Oracle 客户端库配置文件的标准方式。更多信息请参见 oracledb 文档 <https://python-oracledb.readthedocs.io/en/latest/user_guide/initialization.html#optional-oracle-net-configuration-files>

  • fetch_decimals (bool | None) – 指定是否应将数字提取为 decimal.Decimal 值。更多信息请参见 defaults.fetch_decimals <https://python-oracledb.readthedocs.io/en/latest/api_manual/defaults.html#defaults.fetch_decimals>

  • fetch_lobs (bool | None) – 指定是否为 CLOB 或 BLOB 提取字符串/字节而不是定位符。更多信息请参见 defaults.fetch_lobs <https://python-oracledb.readthedocs.io/en/latest/api_manual/defaults.html#defaults.fetch_decimals>

conn_name_attr = 'oracle_conn_id'[源码]
default_conn_name = 'oracle_default'[源码]
conn_type = 'oracle'[源码]
hook_name = 'Oracle'[源码]
supports_autocommit = True[源码]
thick_mode = None[源码]
thick_mode_lib_dir = None[源码]
thick_mode_config_dir = None[源码]
fetch_decimals = None[源码]
fetch_lobs = None[源码]
get_conn()[源码]

获取一个 Oracle 连接对象。

使用自定义 DSN 连接的可选参数(而不是使用 tnsnames.ora 中的服务器别名)。dsn(数据源名称)是 TNS 条目(来自 Oracle 名称服务器或 tnsnames.ora 文件),或者是一个类似于 makedsn() 返回的字符串。

参数:
  • dsn – Oracle 服务器的数据源名称

  • service_name – 您正在连接的数据库的 db_unique_name(TNS 的 CONNECT_DATA 部分)

  • sid – 用于标识系统上特定数据库的 Oracle 系统 ID

您可以在连接的 extra 字段中设置这些参数,如下所示:

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

更多参数详情请参见 oracledb.connect

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

将元组集合插入表中。

所有要插入的数据被视为一个事务。与标准 DbApiHook 实现的差异:

  • Oracle SQL 查询不能以分号 (;) 结尾。

  • 使用 numpy.nan_to_num 替换 NaN 值为空值 NULL(不使用 is_nan() 是因为字符串的输入类型错误)。

  • 在插入时强制将 datetime 单元格转换为 Oracle DATETIME 格式。

参数:
  • table (str) – 目标 Oracle 表,使用点号表示法指定特定数据库

  • rows (list[tuple]) – 要插入到表中的行

  • target_fields – 要填充表中列的名称

  • commit_every (int) – 在一个事务中插入的最大行数。默认为 1000,设置为大于 0 的值。设置为 1 则每行插入一个单独的事务

  • replace (bool | None) – 是否替换而不是插入。当前未实现。

bulk_insert_rows(table, rows, target_fields=None, commit_every=5000, sequence_column=None, sequence_name=None)[源码]

高效地执行 Oracle DB 的批量插入。

这通过 executemany() 使用预处理语句。为了获得最佳性能,请将 rows 作为迭代器传入。

参数:
  • table (str) – 目标 Oracle 表,使用点号表示法指定特定数据库

  • rows (list[tuple]) – 要插入到表中的行

  • target_fields (list[str] | None) – 要填充表中列的名称,默认为 None。如果为 None,则每行的顺序应与表列名称的顺序一致。

  • commit_every (int) – 在一个事务中插入的最大行数。默认为 5000。设置为大于 0 的值。设置为 1 则每行插入一个事务

  • sequence_column (str | None) – 将应用序列的列名称,默认为 None。

  • sequence_name (str | None) – 表中 sequence_name 的名称,默认为 None。

callproc(identifier, autocommit=False, parameters=None)[源码]

调用由提供的字符串标识的存储过程。

任何 OUT 参数必须提供预期 Python 类型(例如 int)的值或该类型的一个实例。

返回值是一个列表或映射,其中包含双向参数;实际的返回类型取决于提供的 parameters 参数的类型。

更多参考信息请参见 https://python-oracledb.readthedocs.io/en/latest/api_manual/cursor.html#Cursor.var

get_uri()[源码]

获取 Oracle 连接的 URI。

此条目有帮助吗?