在使用Airflow的PostgresHook执行插入语句后,如果未提交事务并返回ID,可以按照以下步骤来解决:
get_conn()
方法获取数据库连接,然后调用连接对象的commit()
方法来提交事务。from airflow.hooks.postgres_hook import PostgresHook
# 创建PostgresHook对象
pg_hook = PostgresHook(postgres_conn_id="your_postgres_conn_id")
# 执行插入语句
insert_query = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
pg_hook.run(insert_query, parameters=("value1", "value2"))
# 手动提交事务
conn = pg_hook.get_conn()
conn.commit()
run()
方法时,设置autocommit
参数为True,让PostgresHook自动提交事务。from airflow.hooks.postgres_hook import PostgresHook
# 创建PostgresHook对象,并设置autocommit参数为True
pg_hook = PostgresHook(postgres_conn_id="your_postgres_conn_id", autocommit=True)
# 执行插入语句
insert_query = "INSERT INTO your_table (column1, column2) VALUES (%s, %s)"
pg_hook.run(insert_query, parameters=("value1", "value2"))
# 不需要手动提交事务,因为autocommit参数已经设置为True
以上两种方法都可以解决在执行插入语句后未提交事务的问题。根据具体情况选择其中一种方法即可。