Migrate SQLAlchemy dependency from 1.x to 2.x #4

Open
opened 2026-02-18 11:01:44 +13:00 by guisea · 0 comments
Owner

pyproject.toml currently pins sqlalchemy (<2.0.0). SQLAlchemy 1.x reached end-of-life and 2.0 introduced significant API changes.

Breaking changes to address:

  • session.query(Model) style → select() with session.execute()
  • session.query(Model).filter_by(...)session.scalars(select(Model).filter_by(...))
  • Relationship loading behaviour changes

Files affected:

  • directdnsonly/app/db/__init__.py
  • directdnsonly/app/db/models/__init__.py
  • directdnsonly/worker.py
  • directdnsonly/app/reconciler.py
  • directdnsonly/app/utils/__init__.py
  • directdnsonly/app/backends/coredns_mysql.py
  • directdnsonly/app/backends/powerdns_mysql.py

Note: Easier to do once a test suite exists so regressions are caught automatically.

pyproject.toml currently pins `sqlalchemy (<2.0.0)`. SQLAlchemy 1.x reached end-of-life and 2.0 introduced significant API changes. **Breaking changes to address:** - `session.query(Model)` style → `select()` with `session.execute()` - `session.query(Model).filter_by(...)` → `session.scalars(select(Model).filter_by(...))` - Relationship loading behaviour changes **Files affected:** - `directdnsonly/app/db/__init__.py` - `directdnsonly/app/db/models/__init__.py` - `directdnsonly/worker.py` - `directdnsonly/app/reconciler.py` - `directdnsonly/app/utils/__init__.py` - `directdnsonly/app/backends/coredns_mysql.py` - `directdnsonly/app/backends/powerdns_mysql.py` **Note:** Easier to do once a test suite exists so regressions are caught automatically.
guisea added the tech-debt label 2026-02-18 11:01:44 +13:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: cybercinch/directdnsonly#4