我正在尝试在Airflow工作流程中使用MsSqlOperator,但我无法弄清楚如何设置连接字符串。
我已经尝试将mssql_conn_id设置为连接字符串本身
t2 = MsSqlOperator(
task_id='sql-op',
mssql_conn_id='sa:password@172.17.0.2',
sql='use results; insert into airflow value("airflow","out")',
dag=dag)
我收到错误
airflow.exceptions.AirflowException: The conn_id `sa:password@172.17.0.2` isn't defined
所以我想mssql_conn_id需要定义。某处。有什么想法吗?
我可以使用sqlalchemy连接到MS SQL数据库,如下所示:
params = urllib.quote_plus("DRIVER={ODBC Driver 13 for SQL Server};SERVER=172.17.0.2;UID=SA;PWD=password")
engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)
conn = engine.connect()
所以我知道服务器已启动并正在运行。
答案 0 :(得分:4)
mssql_conn_id
参数引用气流数据库中的connection条目,而不是实际的连接URI。
您可以选择添加连接:
airflow connections --add --conn-id my_mssql --conn_uri mssql+pyodbc://sa:password@172.17.0.2
AIRFLOW_CONN_MY_MSSQL=mssql+pyodbc://sa:password@172.17.0.2
然后只需引用运算符中的conn_id
:
t2 = MsSqlOperator(
task_id='sql-op',
mssql_conn_id='my_mssql',
sql='use results; insert into airflow value("airflow","out")',
dag=dag)