Postgresql 从Insert语句返回的ID未提交

Postgresql 从Insert语句返回的ID未提交,postgresql,airflow,Postgresql,Airflow,我在气流操纵器中使用Postgreshake pg_hook = PostgresHook(postgres_conn_id='postgres_default') insert_activities_sql = "INSERT INTO activities (---) VALUES (---) RETURNING id " activity_results = pg_hook.get_first(insert_activities_sql,parameters=insert_activi

我在气流操纵器中使用Postgreshake

pg_hook = PostgresHook(postgres_conn_id='postgres_default')
insert_activities_sql = "INSERT INTO activities (---) VALUES (---) RETURNING id "


activity_results = pg_hook.get_first(insert_activities_sql,parameters=insert_activities_params)
这将返回Id,但记录未提交到activities表中。我已尝试运行get_记录和get_first,但都没有提交

.run提交但不返回结果id


这是插入记录然后返回id的正确方法吗?

您可以调用
获取自动提交()
检查是否启用自动提交,然后
设置自动提交()
明确启用。这似乎是天真地假设您在获取记录时不会提交任何内容。明确设置它应该可以解决这个问题


如果您希望对正在发生的事情有更多的控制,可以调用
get\u conn()
get\u cursor()
并复制
run()
get\u first()
中正在发生的逻辑以手动提交。

感谢您的指针。pg_hook.get_autocommit()返回了一个错误。但正如你所建议的,我只是复制了运行中的逻辑并手动执行committed@MurrayBryant您的代码是否位于可以共享的位置(或者至少是通用版本)?我一直在努力解决get__df()的相同提交问题,并且在不执行相同SQL两次的情况下编写代码时遇到了问题。类似地,pg_hook.get_autocommit()对我也不起作用。谢谢