diff --git a/app/settings.py b/app/settings.py index 08076b7..50d31a9 100644 --- a/app/settings.py +++ b/app/settings.py @@ -56,8 +56,7 @@ def db_dsn_parsed(self) -> URL: @property def sync_db_dsn_parsed(self) -> URL: - # Alembic drives psycopg2, not asyncpg. - return self.db_dsn_parsed.set(drivername="postgresql") + return self.db_dsn_parsed.set(drivername="postgresql+psycopg2") @property def api_bootstrapper_config(self) -> LitestarConfig: diff --git a/pyproject.toml b/pyproject.toml index ee84d52..129fca2 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -19,7 +19,8 @@ dependencies = [ "alembic", "alembic-postgresql-enum", "psycopg2", - "sqlalchemy[asyncio]", + # <2.1 until advanced-alchemy translates 2.1 integrity errors (litestar-org/advanced-alchemy#803). + "sqlalchemy[asyncio]<2.1", "asyncpg", # tracing "opentelemetry-instrumentation-asyncpg", diff --git a/tests/test_settings.py b/tests/test_settings.py index 0162f88..f4b8669 100644 --- a/tests/test_settings.py +++ b/tests/test_settings.py @@ -9,9 +9,9 @@ def test_db_dsn_parsed_exposes_driver() -> None: assert settings.db_dsn_parsed.database == "dbname" -def test_sync_db_dsn_parsed_drops_the_async_driver() -> None: +def test_sync_db_dsn_parsed_names_the_sync_driver() -> None: settings = Settings(db_dsn="postgresql+asyncpg://user:pw@host/dbname") - assert settings.sync_db_dsn_parsed.drivername == "postgresql" + assert settings.sync_db_dsn_parsed.drivername == "postgresql+psycopg2" assert settings.sync_db_dsn_parsed.database == "dbname"