Warning
This document is for an in-development version 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.0059_sample_dataset_file_path
"""
Migration script to modify the 'file_path' field type in 'sample_dataset' table
to 'TEXT' so that it can support large file paths exceeding 255 characters
"""
from __future__ import print_function
import logging
from sqlalchemy import Column, MetaData, Table, TEXT
from sqlalchemy.exc import NoSuchTableError
log = logging.getLogger(__name__)
metadata = MetaData()
[docs]def upgrade(migrate_engine):
metadata.bind = migrate_engine
print(__doc__)
metadata.reflect()
try:
SampleDataset_table = Table("sample_dataset", metadata, autoload=True)
except NoSuchTableError:
SampleDataset_table = None
log.debug("Failed loading table 'sample_dataset'")
if SampleDataset_table is not None:
cmd = "SELECT id, file_path FROM sample_dataset"
result = migrate_engine.execute(cmd)
filepath_dict = {}
for r in result:
id = int(r[0])
filepath_dict[id] = r[1]
# remove the 'file_path' column
try:
SampleDataset_table.c.file_path.drop()
except Exception:
log.exception("Deleting column 'file_path' from the 'sample_dataset' table failed.")
# create the column again
try:
col = Column("file_path", TEXT)
col.create(SampleDataset_table)
assert col is SampleDataset_table.c.file_path
except Exception:
log.exception("Creating column 'file_path' in the 'sample_dataset' table failed.")
for id, file_path in filepath_dict.items():
cmd = "update sample_dataset set file_path='%s' where id=%i" % (file_path, id)
migrate_engine.execute(cmd)