关于Airflow中PostgresOperator弃用及改用SQLExecuteQueryOperator连接PostgreSQL的咨询
Airflow中PostgresOperator弃用及改用SQLExecuteQueryOperator连接PostgreSQL的咨询
别担心,你的困惑完全合理!我来帮你一步步理清楚:
1. PostgresOperator确实已被弃用
没错,Airflow的新版本(从postgres provider的特定版本开始)已经把PostgresOperator标记为弃用状态了。官方这么做是为了统一所有数据库的SQL执行逻辑,用通用的SQLExecuteQueryOperator替代各个数据库专属的Operator,减少代码冗余的同时,让不同数据库的操作逻辑更一致。
2. 改用SQLExecuteQueryOperator连接PostgreSQL的方法
改起来其实很简单,核心就是替换Operator的导入和调整几个参数,我直接给你修改后的代码示例:
from airflow.providers.common.sql.operators.sql import SQLExecuteQueryOperator create_pet_table = SQLExecuteQueryOperator( task_id="create_pet_table", sql=""" CREATE TABLE IF NOT EXISTS pet ( pet_id SERIAL PRIMARY KEY, name VARCHAR NOT NULL, pet_type VARCHAR NOT NULL, birth_date DATE NOT NULL, OWNER VARCHAR NOT NULL); """, dag=dag, conn_id="postgres_local", # 直接用你原来的PostgreSQL连接ID即可 # 如果需要指定特定数据库schema,添加下面这行,替换<database>为你的schema名称 # hook_params={'schema': 'your_target_schema'} )
关键参数说明:
- conn_id:无需改动,直接使用你原来的
postgres_local连接ID就行,SQLExecuteQueryOperator会自动根据连接类型匹配对应的PostgresHook。 - hook_params:如果你的操作需要指定特定的数据库schema,就添加这个字典参数;不需要的话可以直接省略。
这样修改后,你的任务就能正常执行,也不会再收到弃用警告啦。
备注:内容来源于stack exchange,提问作者manassanan chantaratin
相关产品推荐
相关产品推荐

