airflow.providers.oracle.hooks.oracle¶
属性¶
类¶
与 Oracle SQL 交互。 |
模块内容¶
- 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>。
- 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 格式。
- bulk_insert_rows(table, rows, target_fields=None, commit_every=5000, sequence_column=None, sequence_name=None)[源码]¶
高效地执行 Oracle DB 的批量插入。
这通过 executemany() 使用预处理语句。为了获得最佳性能,请将 rows 作为迭代器传入。
- 参数:
table (str) – 目标 Oracle 表,使用点号表示法指定特定数据库
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。