Fix DB upgrade with using SQLAlchemy 2.x

Sqlaclhemy metadata bind is deperecated from version 1.4 and will
be removed in SQLAlchemy 2.0 [1]. It can be easily replaced with
metadata reflect which works for SQLAlchemy 2.0.

Also current metadata.bind does not result in fetching all tables from
the database, so metadata.tables is an empty mapping, which leads
to db_sync failures.

[1] https://docs.sqlalchemy.org/en/14/core/metadata.html#sqlalchemy.schema.MetaData.bind
[2] https://docs.sqlalchemy.org/en/14/core/reflection.html#reflecting-all-tables-at-once

Co-Authored-By: Dmitriy Rabotyagov <noonedeadpunk@gmail.com>
Change-Id: I8c721722eeb36de64b8c8a79d4fdcec0e92388fa
This commit is contained in:
Michael Johnson 2023-08-23 14:31:46 +00:00
parent 9d115c88a1
commit 0648250388
2 changed files with 6 additions and 1 deletions

View File

@ -21,7 +21,7 @@ LOG = logging.getLogger(__name__)
def is_migration_needed(equivalent_revision):
metadata = sa.MetaData()
metadata.bind = op.get_bind()
metadata.reflect(bind=op.get_bind())
if 'migrate_version' not in metadata.tables.keys():
return True

View File

@ -0,0 +1,5 @@
---
fixes:
- |
Fix an issue where on upgrade, the alembic migration will fail when using
SQLAlchemy 2.x.