This document is for an old release of Galaxy. You can alternatively view this page in the latest release if it exists or view the top of the latest release's documentation.

Source code for galaxy.model.migrate.versions.0054_visualization_dbkey

Migration script to add dbkey column for visualization.

import logging
from json import loads

from sqlalchemy import (

from galaxy.model.migrate.versions.util import (

log = logging.getLogger(__name__)
metadata = MetaData()

[docs]def upgrade(migrate_engine): print(__doc__) metadata.bind = migrate_engine metadata.reflect() Visualization_table = Table("visualization", metadata, autoload=True) Visualization_revision_table = Table("visualization_revision", metadata, autoload=True) # Create dbkey columns. x = Column("dbkey", TEXT) add_column(x, Visualization_table, metadata) y = Column("dbkey", TEXT) add_column(y, Visualization_revision_table, metadata) # Indexes need to be added separately because MySQL cannot index a TEXT/BLOB # column without specifying mysql_length add_index("ix_visualization_dbkey", Visualization_table, 'dbkey') add_index("ix_visualization_revision_dbkey", Visualization_revision_table, 'dbkey') all_viz = migrate_engine.execute("SELECT visualization.id as viz_id, visualization_revision.id as viz_rev_id, visualization_revision.config FROM visualization_revision \ LEFT JOIN visualization ON visualization.id=visualization_revision.visualization_id") for viz in all_viz: viz_id = viz['viz_id'] viz_rev_id = viz['viz_rev_id'] if viz[Visualization_revision_table.c.config]: dbkey = loads(viz[Visualization_revision_table.c.config]).get('dbkey', "").replace("'", "\\'") migrate_engine.execute(f"UPDATE visualization_revision SET dbkey='{dbkey}' WHERE id={viz_rev_id}") migrate_engine.execute(f"UPDATE visualization SET dbkey='{dbkey}' WHERE id={viz_id}")
[docs]def downgrade(migrate_engine): metadata.bind = migrate_engine metadata.reflect() drop_column('dbkey', 'visualization', metadata) drop_column('dbkey', 'visualization_revision', metadata)