From 89f3031dac7c19b10748dce5c80c0439ae6aee66 Mon Sep 17 00:00:00 2001 From: Charles Leifer Date: Thu, 26 Mar 2026 17:33:26 -0500 Subject: [PATCH] Use psycopg3 if psycopg2 is not installed. Fixes #3036 --- CHANGELOG.md | 1 + peewee.py | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ccc1b7dd..4d05df30 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ https://github.com/coleifer/peewee/releases * Better handling of duplicated column names in cursor wrapper implementations. * Improve performance of ModelCursorWrapper when reconstructing model instance graphs after multi-table selects. +* If only psycopg3 is installed, use it by default (#3036) [View commits](https://github.com/coleifer/peewee/compare/4.0.2...master) diff --git a/peewee.py b/peewee.py index 55ab3ec0..099bcdcf 100644 --- a/peewee.py +++ b/peewee.py @@ -4138,7 +4138,7 @@ class PostgresqlDatabase(Database): self._encoding = encoding prefer_psycopg3 = kwargs.pop('prefer_psycopg3', False) - if psycopg is not None and prefer_psycopg3: + if psycopg is not None and (prefer_psycopg3 or psycopg2 is None): self._adapter = self.psycopg3_adapter() else: self._adapter = self.psycopg2_adapter()