Airflow Summit 2025 将于 10 月 07-09 日举行。立即注册获取早鸟票!

airflow.models.connection

属性

log

RE_SANITIZE_CONN_ID

CONN_ID_MAX_LEN

Connection

用于存储不同数据库实例连接信息的占位符。

函数

sanitize_conn_id(conn_id[, max_length])

对连接 ID 进行净化,只允许包含特定字符。

模块内容

airflow.models.connection.log[source]
airflow.models.connection.RE_SANITIZE_CONN_ID[source]
airflow.models.connection.CONN_ID_MAX_LEN: int = 250[source]
airflow.models.connection.sanitize_conn_id(conn_id, max_length=CONN_ID_MAX_LEN)[source]

对连接 ID 进行净化,只允许包含特定字符。

具体来说,它允许包含字母数字字符以及 #,!,-,_,.,:,,/ 和 () 符号,连续匹配 1 到 250 个。如果需要,可以通过设置 max_length 来调整最大长度。

您可以在此处尝试使用正则表达式:https://regex101.com/r/69033B/1

选择这些字符是为了防止注入 JavaScript 或可执行代码,以避免前端出现异常行为。

参数:
  • conn_id (str | None) – 要净化的连接 ID。

  • max_length – 连接 ID 的最大长度,默认为 250。

返回值:

净化的字符串,否则为 None。

返回类型:

str | None

class airflow.models.connection.Connection(conn_id=None, conn_type=None, description=None, host=None, login=None, password=None, schema=None, port=None, extra=None, uri=None)[source]

基类:airflow.models.base.Base, airflow.utils.log.logging_mixin.LoggingMixin

用于存储不同数据库实例连接信息的占位符。

其思想是,脚本在使用操作器或 hooks 时,使用数据库实例的引用 (conn_id),而不是硬编码主机名、登录名和密码。

另请参阅

有关如何使用此类的更多信息,请参阅:管理连接

参数:
  • conn_id (str | None) – 连接 ID。

  • conn_type (str | None) – 连接类型。

  • description (str | None) – 连接描述。

  • host (str | None) – 主机。

  • login (str | None) – 登录名。

  • password (str | None) – 密码。

  • schema (str | None) – 模式。

  • port (int | None) – 端口号。

  • extra (str | dict | None) – 额外元数据。非标准数据,如私钥/SSH 密钥,可保存在此处。JSON 编码对象。

  • uri (str | None) – 描述连接参数的 URI 地址。

EXTRA_KEY = '__extra__'[source]
__tablename__ = 'connection'[source]
id[source]
conn_id[source]
conn_type[source]
description[source]
host[source]
schema[source]
login[source]
port[source]
is_encrypted[source]
is_extra_encrypted[source]
on_db_load()[source]
get_uri()[source]

返回 Airflow 格式的连接 URI。

Airflow URI 格式示例:https://airflow.apache.org/docs/apache-airflow/stable/howto/connection.html#uri-format-example

请注意,此方法返回的 URI **不**与 SQLAlchemy 兼容,如果您需要 SQLAlchemy 兼容的 URI,请使用 sqlalchemy_url

get_password()[source]

返回加密后的密码。

set_password(value)[source]

加密密码并设置到对象属性中。

property password[source]

密码。读取/设置值时,该值会被解密/加密。

get_extra()[source]

返回加密后的额外数据。

set_extra(value)[source]

加密额外数据并将其保存到对象属性中。

property extra[source]

额外数据。读取/设置值时,该值会被解密/加密。

rotate_fernet_key()[source]

使用新密钥加密数据。请参阅:Fernet

get_hook(*, hook_params=None)[source]

根据 conn_type 返回 hook。

__repr__()[source]
test_connection()[source]

调用 get_hook 方法并在其上执行 test_connection 方法。

get_extra_dejson(nested=False)[source]

将 extra 属性反序列化为 JSON。

参数:

nested (bool) – 确定嵌套结构是否也反序列化为 JSON(默认为 False)。

property extra_dejson: dict[source]

通过反序列化 JSON 返回 extra 属性。

classmethod get_connection_from_secrets(conn_id)[source]

按 conn_id 获取连接。

如果在执行上下文中使用 MetastoreBackend,请使用 Task SDK API。

参数:

conn_id (str) – 连接 ID

返回值:

连接

返回类型:

Connection

classmethod from_json(value, conn_id=None)[source]
as_json()[source]

将 Connection 转换为 JSON 字符串对象。

此条目有帮助吗?