Fix error of tacker-db-manage postgresql migration

After introducing codes for updating sqlalchemy version 2,
when db is populated to postgresql by running `tacker-db-manage
upgrade head`, `sqlalchemy.table` function raise "NoSuchTable"
error if "engine" is passed as autoload_with.
This patch fix the above error by changing "engine" to "connection".

Closes-bug: #2085879
Change-Id: If14d101ceb510b38d14725ae27b81d9131cd4332
This commit is contained in:
Kyaw Myo Thant
2024-10-30 09:42:31 +09:00
parent 752881e570
commit ba8c35a78a
3 changed files with 8 additions and 11 deletions

View File

@ -35,11 +35,10 @@ def _migrate_duplicate_names(table):
meta = sa.MetaData()
conn = op.get_bind()
engine = conn.engine
meta.create_all(bind=engine)
t = sa.Table(table, meta, autoload_with=engine)
meta.create_all(bind=conn)
t = sa.Table(table, meta, autoload_with=conn)
session = sa.orm.Session(bind=engine)
session = sa.orm.Session(bind=conn)
#with session.begin(subtransactions=True):
with session.begin():
dup_names = session.query(t.c.name).group_by(

View File

@ -38,9 +38,8 @@ down_revision = 'f958f58e5daa'
def _migrate_data(table, column_name):
meta = sa.MetaData()
conn = op.get_bind()
engine = conn.engine
meta.create_all(bind=engine)
t = sa.Table(table, meta, autoload_with=engine)
meta.create_all(bind=conn)
t = sa.Table(table, meta, autoload_with=conn)
for r in conn.execute(t.select()):
stmt = t.update().where(t.c.id == r.id).values(

View File

@ -35,11 +35,10 @@ def _migrate_duplicate_vnf_package_vnfd_id(table):
meta = sa.MetaData()
conn = op.get_bind()
engine = conn.engine
meta.create_all(bind=engine)
t = sa.Table(table, meta, autoload_with=engine)
meta.create_all(bind=conn)
t = sa.Table(table, meta, autoload_with=conn)
session = sa.orm.Session(bind=engine)
session = sa.orm.Session(bind=conn)
with session.begin():
dup_vnfd_ids = session.query(t.c.vnfd_id).group_by(
t.c.vnfd_id).having(sa.func.count() > 1).all()