如何从Airflow的Snowflake连接中获取Extra参数?
从Airflow Snowflake连接中获取Extra参数的方法
Airflow的Connection对象不会将Extra参数直接映射为对象属性,你需要通过以下方式获取:
方法一:使用extra_dejson(推荐)
Airflow内置了extra_dejson属性,会自动将Extra字段的JSON字符串解析为字典,直接通过键名取值即可:
from airflow.hooks.base import BaseHook conn = BaseHook.get_connection("snowflake_conn") # 获取role参数 role = conn.extra_dejson.get("role") # 可选:添加默认值避免键不存在时报错 role = conn.extra_dejson.get("role", "default_role")
方法二:手动解析JSON字符串
针对Airflow 1.x等旧版本,可手动解析Extra字段的JSON字符串:
import json from airflow.hooks.base import BaseHook conn = BaseHook.get_connection("snowflake_conn") extra_dict = json.loads(conn.extra) role = extra_dict.get("role")
注意事项
在Airflow UI配置Snowflake连接的Extra参数时,必须是合法JSON格式,示例:
{"role": "YOUR_ROLE_NAME", "warehouse": "YOUR_WAREHOUSE"}
格式错误会导致解析失败。
内容的提问来源于stack exchange,提问作者Nairda123
相关产品推荐
相关产品推荐

