Fixed an issue where pgAdmin config migration was failing while upgrading to v9.7 #9095

This commit is contained in:
Pravesh Sharma authored and GitHub committed 2025-08-28 10:15:35 +05:30
1 parent 09bc544e83
commit 7caaf2de82
1 file changed
+13 -6
+13 -6
View File
@@ -15,6 +15,7 @@ Revises: e24b1c4def17
Create Date: 2025-07-15 12:27:48.780562 Create Date: 2025-07-15 12:27:48.780562
""" """
import sqlalchemy as sa
from alembic import op from alembic import op
from sqlalchemy.orm.session import Session from sqlalchemy.orm.session import Session
from pgadmin.model import Preferences, ModulePreference, PreferenceCategory,\ from pgadmin.model import Preferences, ModulePreference, PreferenceCategory,\
@@ -84,15 +85,21 @@ def upgrade():
if pref.name == new_pref.name: if pref.name == new_pref.name:
pref_map[pref.id] = new_pref.id pref_map[pref.id] = new_pref.id
# get metadata from current connection
meta = sa.MetaData()
# define table representation
meta.reflect(op.get_bind(), only=('user_preferences',))
user_pref_table = sa.Table('user_preferences', meta)
# Update the user preferences with new preference ids
for key, val in pref_map.items(): for key, val in pref_map.items():
record_to_update = session.query(UserPreference).filter_by( op.execute(
pid=key).first() user_pref_table.update().where(
if record_to_update: user_pref_table.c.pid == key).values(pid=val)
record_to_update.pid = val )
# Delete the old preferences and categories # Delete the old preferences and categories
session.query(Preferences).filter(Preferences.name.in_(prefs), session.query(Preferences).filter(Preferences.cid.in_(category_ids)
Preferences.cid.in_(category_ids)
).delete(synchronize_session=False) ).delete(synchronize_session=False)
session.query(PreferenceCategory).filter( session.query(PreferenceCategory).filter(