从Airflow连接中提取额外参数

1 投票
1 回答
45 浏览
提问于 2025-04-14 15:47

我在Airflow中定义了一个连接到Snowflake的设置。

我使用下面的代码来选择用户、密码和模式:

conn = BaseHook.get_connection("snowflake_conn")
conn.login

这段代码返回登录信息(在这个例子中是登录名)。

但是如果我尝试访问“额外”的参数,就不行了。

conn = BaseHook.get_connection("snowflake_conn")
conn.role

这时会出现一个AttributeError: 'Connection' object has no attribute 'role'的错误。

有没有其他方法可以从Airflow的连接设置中获取这些额外的参数呢?

1 个回答

1

额外的参数会存储在 extra 字段里。如果你想访问这些参数,首先需要把它从字符串转换成 Python 字典。你可以使用 Connection.extra_dejson 这个属性来完成这个转换。

conn = BaseHook.get_connection("snowflake_conn")
conn.extra_dejson.get("role")

撰写回答