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.tw/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 字串物件。

此條目有幫助嗎?