def upgrade(): bind = op.get_bind() session = db.Session(bind=bind) for table_name, model in models.items(): with op.batch_alter_table(table_name) as batch_op: batch_op.add_column( sa.Column( "uuid", UUIDType(binary=True), primary_key=False, default=uuid4, ), ) assign_uuids(model, session) # add uniqueness constraint with op.batch_alter_table(table_name) as batch_op: # batch mode is required for sqllite batch_op.create_unique_constraint(f"uq_{table_name}_uuid", ["uuid"]) # add UUID to Dashboard.position_json slice_uuid_map = { slc.id: slc.uuid for slc in session.query(models["slices"]).options( load_only("id", "uuid")).all() } update_dashboards(session, slice_uuid_map)
def upgrade(): bind = op.get_bind() session = db.Session(bind=bind) # Add uuid column try: with op.batch_alter_table("saved_query") as batch_op: batch_op.add_column( sa.Column( "uuid", UUIDType(binary=True), primary_key=False, default=uuid4, ), ) except OperationalError: # Ignore column update errors so that we can run upgrade multiple times pass assign_uuids(SavedQuery, session) try: # Add uniqueness constraint with op.batch_alter_table("saved_query") as batch_op: # Batch mode is required for sqlite batch_op.create_unique_constraint("uq_saved_query_uuid", ["uuid"]) except OperationalError: pass
def upgrade() -> None: bind = op.get_bind() session: Session = Session(bind=bind) Base.metadata.drop_all(bind=bind, tables=new_tables) Base.metadata.create_all(bind=bind, tables=new_tables) copy_tables(session) copy_datasets(session) copy_columns(session) copy_metrics(session) session.commit() postprocess_columns(session) session.commit() postprocess_datasets(session) session.commit() # Table were created with the same uuids are datasets. They should # have different uuids as they are different entities. print(">> Assign new UUIDs to tables...") assign_uuids(NewTable, session) print(">> Drop intermediate columns...") # These columns are are used during migration, as datasets are independent of tables once created, # dataset columns also the same to table columns. with op.batch_alter_table(NewTable.__tablename__) as batch_op: batch_op.drop_column("sqlatable_id") with op.batch_alter_table(NewColumn.__tablename__) as batch_op: batch_op.drop_column("table_id")