NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
PyPI · #3745 most downloaded on PyPI
Provider package apache-airflow-providers-postgres for Apache Airflow
Last release 5 days ago
29 Sep 2026
Ships fairly regularly
a new release about every 2 weeks
Nearly every release is documented
notes for 60 of the last 60 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
150 releases · first in 2020
One column per quarter.
- Allow keeping PostgresHook SQLAlchemy engines on psycopg2
Release Date: 2026-09-29
Allow keeping PostgresHook SQLAlchemy engines on psycopg2 (#72000)
Fix grammar in the dialects documentation (#73145)
Allow keeping PostgresHook SQLAlchemy engines on psycopg2 (#72000)
Fix grammar in the dialects documentation (#73145)
Nothing published for this version
- Add type annotations to sql hooks
Release Date: 2026-08-23
Add type annotations to sql hooks (#70815)
Nothing published for this version
- Use built-in exceptions for Postgres hook input validation
Release Date: 2026-08-08
Use built-in exceptions for Postgres hook input validation (#70537)
Document psycopg3 driver switch for PostgresHook connections (#70360)
Use built-in exceptions for Postgres hook input validation (#70537)
Document psycopg3 driver switch for PostgresHook connections (#70360)
Nothing published for this version
Nothing published for this version
On Airflow 3.4.0 and later, the default async metadata-database driver becomes psycopg (psycopg3): the derived async connection URL changes from postg
Release Date: 2026-07-28
Note
On Airflow 3.4.0 and later, the default async metadata-database driver becomes psycopg (psycopg3): the derived async connection URL changes from postgresql+asyncpg:// to postgresql+psycopg_async:// , which is safe behind transaction-mode PgBouncer with no extra configuration. psycopg[binary] is now installed by default to serve it.
asyncpg remains installed by default as well. This provider still supports Airflow cores older than 3.4.0, which derive the async URL as postgresql+asyncpg:// unconditionally and have no psycopg fallback — so asyncpg must stay present for them to work. It will become opt-in-only (via the existing [asyncpg] extra) in a future release once the minimum supported Airflow is 3.4.0.
To keep using asyncpg on Airflow 3.4.0+, set [database] sql_alchemy_conn_async = postgresql+asyncpg://... explicitly.
Note
On Airflow 3.4.0 and later, psycopg (psycopg3) becomes the default synchronous Postgres driver, mirroring the async default above. psycopg[binary] is installed by default to serve it.
psycopg2-binary remains installed by default as well. This provider still supports Airflow cores older than 3.4.0, which normalize the synchronous metadata-database connection to postgresql+psycopg2:// and have no psycopg fallback; Airflow 2.11 additionally ships SQLAlchemy 1.4, which has no native psycopg (v3) dialect at all — so psycopg2 must stay present for those cores to work. It will become opt-in-only (via the existing [psycopg2] extra) in a future release once the minimum supported Airflow is 3.4.0.
To keep using psycopg2 on Airflow 3.4.0+, set [database] sql_alchemy_conn = postgresql+psycopg2://... explicitly.
Note
The two notes above describe the metadata database only. Independently of them, PostgresHook selects psycopg (psycopg3) for the connections it opens whenever SQLAlchemy 2.x is installed — the default on Airflow 3.2 and later, and also the case on Airflow 3.1 if SQLAlchemy has been upgraded to 2.x. Airflow 2.11 and 3.0 pin SQLAlchemy below 2.0 and are unaffected.
The google , pgvector and amazon (Redshift SQLAlchemy/OpenLineage engine) integrations follow the same selection, as does a Celery result_backend derived from the metadata-database URL — unless [celery] result_backend is set explicitly.
There is no connection or configuration option to keep hooks on psycopg2; the sql_alchemy_conn workarounds above cover the metadata database only. If your Dags rely on psycopg2-specific behaviour, test before upgrading or pin the provider below 7.0.0.
Make psycopg (v3) the default synchronous Postgres driver (#69526)
Switch the default async Postgres driver from asyncpg to psycopg3 (#69089)
Keep asyncpg installed by default in the Postgres provider (#69690)
Note
On Airflow 3.4.0 and later, the default async metadata-database driver becomes psycopg (psycopg3): the derived async connection URL changes from postgresql+asyncpg:// to postgresql+psycopg_async://, which is safe behind transaction-mode PgBouncer with no extra configuration. psycopg[binary] is now installed by default to serve it.
asyncpg remains installed by default as well. This provider still supports Airflow cores older than 3.4.0, which derive the async URL as postgresql+asyncpg:// unconditionally and have no psycopg fallback — so asyncpg must stay present for them to work. It will become opt-in-only (via the existing [asyncpg] extra) in a future release once the minimum supported Airflow is 3.4.0.
To keep using asyncpg on Airflow 3.4.0+, set [database] sql_alchemy_conn_async = postgresql+asyncpg://... explicitly.
Note
On Airflow 3.4.0 and later, psycopg (psycopg3) becomes the default synchronous Postgres driver, mirroring the async default above. psycopg[binary] is installed by default to serve it.
psycopg2-binary remains installed by default as well. This provider still supports Airflow cores older than 3.4.0, which normalize the synchronous metadata-database connection to postgresql+psycopg2:// and have no psycopg fallback; Airflow 2.11 additionally ships SQLAlchemy 1.4, which has no native psycopg (v3) dialect at all — so psycopg2 must stay present for those cores to work. It will become opt-in-only (via the existing [psycopg2] extra) in a future release once the minimum supported Airflow is 3.4.0.
To keep using psycopg2 on Airflow 3.4.0+, set [database] sql_alchemy_conn = postgresql+psycopg2://... explicitly.
Note
The two notes above describe the metadata database only. Independently of them, PostgresHook selects psycopg (psycopg3) for the connections it opens whenever SQLAlchemy 2.x is installed — the default on Airflow 3.2 and later, and also the case on Airflow 3.1 if SQLAlchemy has been upgraded to 2.x. Airflow 2.11 and 3.0 pin SQLAlchemy below 2.0 and are unaffected.
The google, pgvector and amazon (Redshift SQLAlchemy/OpenLineage engine) integrations follow the same selection, as does a Celery result_backend derived from the metadata-database URL — unless [celery] result_backend is set explicitly.
There is no connection or configuration option to keep hooks on psycopg2; the sql_alchemy_conn workarounds above cover the metadata database only. If your Dags rely on psycopg2-specific behaviour, test before upgrading or pin the provider below 7.0.0.
Make psycopg (v3) the default synchronous Postgres driver (#69526)
Switch the default async Postgres driver from asyncpg to psycopg3 (#69089)
Keep asyncpg installed by default in the Postgres provider (#69690)
Nothing published for this version
Nothing published for this version
- Add configurable UPSERT update fields to PostgresHook
Release Date: 2026-06-22
Add configurable UPSERT update fields to PostgresHook (#67045)
Use execute_values instead of execute_batch for better bulk insert performance with PostgresHook (#68207)
Add configurable UPSERT update fields to PostgresHook (#67045)
Use execute_values instead of execute_batch for better bulk insert performance with PostgresHook (#68207)
Nothing published for this version
- Refactor PostgresHook and associated runtime tests
Release Date: 2026-06-07
Refactor PostgresHook and associated runtime tests (#66893)
Nothing published for this version
- Add uri sanitizers and asset factories for new schemes
Release Date: 2026-05-23
Add uri sanitizers and asset factories for new schemes (#66426)
Add uri sanitizers and asset factories for new schemes (#66426)
Nothing published for this version
- Load hook metadata from YAML without importing Hook class
Release Date: 2026-04-12
Load hook metadata from YAML without importing Hook class (#63826)
Load hook metadata from YAML without importing Hook class (#63826)
Nothing published for this version
- Add validation for missing host and cluster/workgroup identifier in aws iam token retrieval
Release Date: 2026-03-28
Add validation for missing host and cluster/workgroup identifier in aws iam token retrieval (#61965)
Add Python 3.14 Support (#63520)
Add validation for missing host and cluster/workgroup identifier in aws iam token retrieval (#61965)
Add Python 3.14 Support (#63520)
Nothing published for this version
- Migrate postgres connection UI metadata to YAML
Release Date: 2026-03-13
Migrate postgres connection UI metadata to YAML (#62445)
Nothing published for this version
- feat: Add Hook Level Lineage to SQL hooks
Release Date: 2026-03-02
feat: Add Hook Level Lineage to SQL hooks (#61535)
Added validation for missing redshift connection host in postgres hook openlineage (#60918)
Bump min sqlalchemy version to 1.4.54 (#62299)
feat: Add Hook Level Lineage to SQL hooks (#61535)
Added validation for missing redshift connection host in postgres hook openlineage (#60918)
Bump min sqlalchemy version to 1.4.54 (#62299)
Nothing published for this version
- Guard type aliases and remove redundant imports in the postgres hook
Release Date: 2026-02-14
Guard type aliases and remove redundant imports in the postgres hook (#61554)
Cleanup some dependencies (#60992)
Guard type aliases and remove redundant imports in the postgres hook (#61554)
Cleanup some dependencies (#60992)
Nothing published for this version
- Add SQLAlchemy to the dev‑dependency group in providers
Release Date: 2026-02-02
Add SQLAlchemy to the dev‑dependency group in providers (#60472)
Add SQLAlchemy to the dev‑dependency group in providers (#60472)
Nothing published for this version
- Consume ''AirflowOptionalProviderFeatureException'' from compat sdk in providers
Release Date: 2026-01-17
Consume ''AirflowOptionalProviderFeatureException'' from compat sdk in providers (#60335)
New year means updated Copyright notices (#60344)
Make SQLAlchemy optional for Postgres provider (#60257)
Migrate postgres provider to use airflow.sdk.configuration.conf (#59984)
Consume ''AirflowOptionalProviderFeatureException'' from compat sdk in providers (#60335)
New year means updated Copyright notices (#60344)
Make SQLAlchemy optional for Postgres provider (#60257)
Migrate postgres provider to use airflow.sdk.configuration.conf (#59984)
Nothing published for this version
- Add backcompat for exceptions in providers
Release Date: 2025-12-13
Add backcompat for exceptions in providers (#58727)
Nothing published for this version
This release of provider is only available for Airflow 2.11+ as explained in the Apache Airflow providers support policy < https://github.com/apache/a
Release Date: 2025-11-30
Note
This release of provider is only available for Airflow 2.11+ as explained in the Apache Airflow providers support policy < https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers >_.
Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)
Note
This release of provider is only available for Airflow 2.11+ as explained in the Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
Bump minimum Airflow version in providers to Airflow 2.11.0 (#58612)
Nothing published for this version
- Convert all airflow distributions to be compliant with ASF requirements
Release Date: 2025-11-17
Convert all airflow distributions to be compliant with ASF requirements (#58138)
better error handling in SnowflakeHook and PostgresHook when old version of AzureBaseHook (#57184)
Convert all airflow distributions to be compliant with ASF requirements (#58138)
better error handling in SnowflakeHook and PostgresHook when old version of AzureBaseHook (#57184)
Nothing published for this version
- Add Azure IAM/Entra ID support for PostgresHook
Release Date: 2025-10-26
Add Azure IAM/Entra ID support for PostgresHook (#55729)
fix mypy type errors in common/sql provider for sqlalchemy 2 upgrade (#56824)
Migrate postgres provider to ''common.compat'' (#57022)
Remove placeholder Release Date in changelog and index files (#56056)
Add Azure IAM/Entra ID support for PostgresHook (#55729)
fix mypy type errors in common/sql provider for sqlalchemy 2 upgrade (#56824)
Migrate postgres provider to ''common.compat'' (#57022)
Remove placeholder Release Date in changelog and index files (#56056)
Nothing published for this version
- Added specialized insert_rows in PostgresHook which uses faster psycopg execute_batch method
Release Date: 2025-09-09
Added specialized insert_rows in PostgresHook which uses faster psycopg execute_batch method (#54988)
Add rudimentary support for psycopg3 (#52976)
Implemented native get_column_names in PostgresDialect to become SQLAlchemy independent (#54437)
PostgresDialect should use index instead of name in get_column_names and get_primary_keys (#54832)
Add CI support for SQLAlchemy 2.0 (#52233)
Make term Dag consistent in providers docs (#55101)
Added specialized insert_rows in PostgresHook which uses faster psycopg execute_batch method (#54988)
Add rudimentary support for psycopg3 (#52976)
Implemented native get_column_names in PostgresDialect to become SQLAlchemy independent (#54437)
PostgresDialect should use index instead of name in get_column_names and get_primary_keys (#54832)
Add CI support for SQLAlchemy 2.0 (#52233)
Make term Dag consistent in providers docs (#55101)
Nothing published for this version
- Fix the PostgresHook ignoring custom adapters registered
Release Date: 2025-08-11
Fix the PostgresHook ignoring custom adapters registered (#53707)
Fix the PostgresHook ignoring custom adapters registered (#53707)
Nothing published for this version
- fix(postgres/hooks): ensure get_df uses SQLAlchemy engine to avoid pandas warning
Release Date: 2025-08-02
fix(postgres/hooks): ensure get_df uses SQLAlchemy engine to avoid pandas warning (#52224)
Add Python 3.13 support for Airflow. (#46891)
Cleanup type ignores in postgres provider where possible (#53275)
Remove type ignore across codebase after mypy upgrade (#53243)
Remove upper-binding for "python-requires" (#52980)
Temporarily switch to use >=,< pattern instead of '~=' (#52967)
fix(postgres/hooks): ensure get_df uses SQLAlchemy engine to avoid pandas warning (#52224)
Add Python 3.13 support for Airflow. (#46891)
Cleanup type ignores in postgres provider where possible (#53275)
Remove type ignore across codebase after mypy upgrade (#53243)
Remove upper-binding for "python-requires" (#52980)
Temporarily switch to use >=,< pattern instead of '~=' (#52967)
Nothing published for this version
- Move 'BaseHook' implementation to task SDK
Release Date: 2025-07-06
Move 'BaseHook' implementation to task SDK (#51873)
Disable UP038 ruff rule and revert mandatory 'X | Y' in insintance checks (#52644)
Drop support for Python 3.9 (#52072)
Move 'BaseHook' implementation to task SDK (#51873)
Disable UP038 ruff rule and revert mandatory 'X | Y' in insintance checks (#52644)
Drop support for Python 3.9 (#52072)
Nothing published for this version
This release of provider is only available for Airflow 2.10+ as explained in the Apache Airflow providers support policy < https://github.com/apache/a
Release Date: 2025-05-18
Note
This release of provider is only available for Airflow 2.10+ as explained in the Apache Airflow providers support policy < https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers >_.
Bump min Airflow version in providers to 2.10 (#49843)
Note
This release of provider is only available for Airflow 2.10+ as explained in the Apache Airflow providers support policy <https://github.com/apache/airflow/blob/main/PROVIDERS.rst#minimum-supported-version-of-airflow-for-community-managed-providers>_.
Bump min Airflow version in providers to 2.10 (#49843)
Nothing published for this version
- Fix PostgresHook Json serialization
Release Date: 2025-04-19
Fix PostgresHook Json serialization (#49120)
remove superfluous else block (#49199)
Fix PostgresHook Json serialization (#49120)
remove superfluous else block (#49199)
Nothing published for this version
- Update minimum version of common.sql provider to 1.23.0
Release Date: 2025-04-09
Update minimum version of common.sql provider to 1.23.0 (#48416)
Update minimum version of common.sql provider to 1.23.0 (#48416)
Nothing published for this version
Release Date: 2025-03-13 ### Misc - Upgrade flit to 3.11.0
Release Date: 2025-03-13
Upgrade flit to 3.11.0 (#46938)
Nothing published for this version
- Introduce notion of dialects in DbApiHook
Release Date: 2025-02-26
Introduce notion of dialects in DbApiHook (#41327)
Fix escaping of special characters or reserved words as column names in dialects of common sql provider (#45640)
Bump psycopg2 to 2.9.9 to possibly avoid crash on Python 3.12 (#46431)
Added ADR document describing why the notion of dialects is introduced (#45456)
Bump minimum version of psycopg2-binary to 2.9.7 (#45635)
Introduce notion of dialects in DbApiHook (#41327)
Fix escaping of special characters or reserved words as column names in dialects of common sql provider (#45640)
Bump psycopg2 to 2.9.9 to possibly avoid crash on Python 3.12 (#46431)
Added ADR document describing why the notion of dialects is introduced (#45456)
Bump minimum version of psycopg2-binary to 2.9.7 (#45635)
Nothing published for this version
All deprecated classes, parameters and features have been removed from the Postgres provider package. The following breaking changes were introduced:
Release Date: 2024-12-26
Note
This release of provider is only available for Airflow 2.9+ as explained in the Apache Airflow providers support policy .
Warning
All deprecated classes, parameters and features have been removed from the Postgres provider package. The following breaking changes were introduced:
The schema arg has been renamed to database as it contained the database name. Deprecated parameters, getters and setters have been removed. Please use database to set the database name.
Remove airflow.providers.postgres.operators.postgres.PostgresOperator . Please use airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator instead.
Remove Provider Deprecations in Postgres (#44705)
Bump minimum Airflow version in providers to Airflow 2.9.0 (#44956)
Update DAG example links in multiple providers documents (#44034)
Add basic asyncio support (#43944)
Note
This release of provider is only available for Airflow 2.9+ as explained in the Apache Airflow providers support policy.
Warning
All deprecated classes, parameters and features have been removed from the Postgres provider package. The following breaking changes were introduced:
The schema arg has been renamed to database as it contained the database name. Deprecated parameters, getters and setters have been removed. Please use database to set the database name.
Remove airflow.providers.postgres.operators.postgres.PostgresOperator. Please use airflow.providers.common.sql.operators.sql.SQLExecuteQueryOperator instead.
Remove Provider Deprecations in Postgres (#44705)
Bump minimum Airflow version in providers to Airflow 2.9.0 (#44956)
Update DAG example links in multiple providers documents (#44034)
Add basic asyncio support (#43944)
Nothing published for this version
Nothing published for this version
- Add AWS Redshift Serverless support to PostgresHook
Release Date: 2024-11-18
Add AWS Redshift Serverless support to PostgresHook (#43669)
Fix PostgresHook bug when getting AWS Redshift Serverless credentials (#43807)
Add support for semicolon stripping to DbApiHook, PrestoHook, and TrinoHook (#41916)
Add AWS Redshift Serverless support to PostgresHook (#43669)
Fix PostgresHook bug when getting AWS Redshift Serverless credentials (#43807)
Add support for semicolon stripping to DbApiHook, PrestoHook, and TrinoHook (#41916)
Your coding agent can read these notes before it upgrades. Set up the MCP server →