def upgrade_db_structure(): """Upgrade the tables version by version""" from playhouse.migrate import PostgresqlMigrator, migrate migrator = PostgresqlMigrator(wapt_db) logger.info('Current DB: %s version: %s' % (wapt_db.connect_kwargs, get_db_version())) # from 1.4.1 to 1.4.2 if get_db_version() < '1.4.2': with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), '1.4.2')) migrate( migrator.rename_column(Hosts._meta.name, 'host', 'host_info'), migrator.rename_column(Hosts._meta.name, 'wapt', 'wapt_status'), migrator.rename_column(Hosts._meta.name, 'update_status', 'last_update_status'), migrator.rename_column(Hosts._meta.name, 'softwares', 'installed_softwares'), migrator.rename_column(Hosts._meta.name, 'packages', 'installed_packages'), ) HostGroups.create_table(fail_silently=True) HostJsonRaw.create_table(fail_silently=True) HostWsus.create_table(fail_silently=True) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = '1.4.2' v.save() next_version = '1.4.3' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) if not [ c.name for c in wapt_db.get_columns('hosts') if c.name == 'host_certificate' ]: migrate( migrator.add_column(Hosts._meta.name, 'host_certificate', Hosts.host_certificate), ) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.4.3.1' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) columns = [c.name for c in wapt_db.get_columns('hosts')] opes = [] if not 'last_logged_on_user' in columns: opes.append( migrator.add_column(Hosts._meta.name, 'last_logged_on_user', Hosts.last_logged_on_user)) if 'installed_sofwares' in columns: opes.append( migrator.drop_column(Hosts._meta.name, 'installed_sofwares')) if 'installed_sofwares' in columns: opes.append( migrator.drop_column(Hosts._meta.name, 'installed_packages')) migrate(*opes) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.4.3.2' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) wapt_db.execute_sql('''\ ALTER TABLE hostsoftwares ALTER COLUMN publisher TYPE character varying(2000), ALTER COLUMN version TYPE character varying(1000);''') (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.5.0.4' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) columns = [c.name for c in wapt_db.get_columns('hosts')] opes = [] if not 'server_uuid' in columns: opes.append( migrator.add_column(Hosts._meta.name, 'server_uuid', Hosts.server_uuid)) migrate(*opes) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.5.0.11' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) HostGroups.create_table(fail_silently=True) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.5.1.1' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) columns = [c.name for c in wapt_db.get_columns('hosts')] opes = [] if not 'computer_ad_site' in columns: opes.append( migrator.add_column(Hosts._meta.name, 'computer_ad_site', Hosts.computer_ad_site)) if not 'computer_ad_ou' in columns: opes.append( migrator.add_column(Hosts._meta.name, 'computer_ad_ou', Hosts.computer_ad_ou)) if not 'computer_ad_groups' in columns: opes.append( migrator.add_column(Hosts._meta.name, 'computer_ad_groups', Hosts.computer_ad_groups)) migrate(*opes) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.5.1.3' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) columns = [c.name for c in wapt_db.get_columns('hosts')] opes = [] if not 'registration_auth_user' in columns: opes.append( migrator.add_column(Hosts._meta.name, 'registration_auth_user', Hosts.registration_auth_user)) migrate(*opes) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.5.1.14' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) columns = [ c.name for c in wapt_db.get_columns('hostpackagesstatus') ] opes = [] if not 'depends' in columns: opes.append( migrator.add_column(HostPackagesStatus._meta.name, 'depends', HostPackagesStatus.depends)) if not 'conflicts' in columns: opes.append( migrator.add_column(HostPackagesStatus._meta.name, 'conflicts', HostPackagesStatus.conflicts)) migrate(*opes) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save() next_version = '1.5.1.17' if get_db_version() < next_version: with wapt_db.atomic(): logger.info('Migrating from %s to %s' % (get_db_version(), next_version)) opes = [] ## migrate(*opes) WsusScan2History.create_table(fail_silently=True) (v, created) = ServerAttribs.get_or_create(key='db_version') v.value = next_version v.save()
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db from redash import models if __name__ == "__main__": db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate(migrator.drop_column("users", "countries")) db.close_db(None)
def backward(): #removes author_id column, will delete all data migrator = PostgresqlMigrator(models.DB) migrate(migrator.drop_column('blogpost', 'author_id'), ) models.Author.drop_table()
migrate(migrator.add_column('groups', 'type', Group.type)) for name in ['default', 'admin']: group = Group.get(Group.name == name) group.type = Group.BUILTIN_GROUP group.save() # Create association table between data sources and groups DataSourceGroup.create_table() # add default to existing data source: default_org = Organization.get_by_id(1) default_group = Group.get(Group.name == "default") for ds in DataSource.all(default_org): DataSourceGroup.create(data_source=ds, group=default_group) # change the groups list on a user object to be an ids list migrate(migrator.rename_column('users', 'groups', 'old_groups'), ) migrate(migrator.add_column('users', 'groups', User.groups)) group_map = dict(map(lambda g: (g.name, g.id), Group.select())) user_map = defaultdict(list) for user in User.select(User, peewee.SQL('old_groups')): group_ids = [group_map[group] for group in user.old_groups] user.update_instance(groups=group_ids) migrate(migrator.drop_column('users', 'old_groups')) db.close_db(None)
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db if __name__ == '__main__': db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate(migrator.drop_column('groups', 'tables')) db.close_db(None)
from peewee import PostgresqlDatabase from playhouse.migrate import PostgresqlMigrator, migrate if __name__ == '__main__': migrator = PostgresqlMigrator(PostgresqlDatabase('imserv')) migrate(migrator.drop_column('image', 'created'))
group = Group.get(Group.name==name) group.type = Group.BUILTIN_GROUP group.save() # Create association table between data sources and groups DataSourceGroup.create_table() # add default to existing data source: default_org = Organization.get_by_id(1) default_group = Group.get(Group.name=="default") for ds in DataSource.all(default_org): DataSourceGroup.create(data_source=ds, group=default_group) # change the groups list on a user object to be an ids list migrate( migrator.rename_column('users', 'groups', 'old_groups'), ) migrate(migrator.add_column('users', 'groups', User.groups)) group_map = dict(map(lambda g: (g.name, g.id), Group.select())) user_map = defaultdict(list) for user in User.select(User, peewee.SQL('old_groups')): group_ids = [group_map[group] for group in user.old_groups] user.update_instance(groups=group_ids) migrate(migrator.drop_column('users', 'old_groups')) db.close_db(None)
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db from redash import models if __name__ == '__main__': db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate( migrator.add_column('queries', 'schedule', models.Query.schedule), ) db.database.execute_sql("UPDATE queries SET schedule = ttl WHERE ttl > 0;") migrate( migrator.drop_column('queries', 'ttl') ) db.close_db(None)
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db from redash import models if __name__ == '__main__': db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate(migrator.drop_column('users', 'status')) db.close_db(None)
def backward(): migrator = PostgresqlMigrator(models.DB) migrate(migrator.drop_column('blogpost', 'category'), ) models.Comment.drop_table()
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db from redash import models if __name__ == '__main__': db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate(migrator.drop_column('groups', 'countries')) db.close_db(None)
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db from redash import models if __name__ == '__main__': db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate(migrator.drop_column('users', 'parent_user_id')) db.close_db(None)
def backward(): migrator = PostgresqlMigrator(models.DB) migrate(migrator.drop_column('comment', 'comment_author'), ) models.Comment.drop_table()
def backward(): migrator = PostgresqlMigrator(models.DB) migrate(migrator.drop_column('post', 'author_id'), ) models.Author.drop_table()
from playhouse.migrate import PostgresqlMigrator, migrate from redash.models import db if __name__ == '__main__': db.connect_db() migrator = PostgresqlMigrator(db.database) with db.database.transaction(): migrate( migrator.drop_column('groups', 'tables') ) db.close_db(None)
from playhouse.migrate import migrate, PostgresqlMigrator from app.models import DATABASE from app.qa.models import Reply migrator = PostgresqlMigrator(DATABASE) Reply.content.default = '' migrate( migrator.drop_column('TBL_REPLY', Reply.content.db_column), migrator.add_column('TBL_REPLY', Reply.content.db_column, Reply.content))
from playhouse.migrate import PostgresqlMigrator, migrate from app.models import DATABASE from app.qa.models import Question migrator = PostgresqlMigrator(DATABASE) Question.content.default = '' contents = {} for question in Question.select(): contents[question.id] = question.content print(contents) migrate( migrator.drop_column('TBL_QUESTION', 'CONTENT'), migrator.add_column('TBL_QUESTION', Question.content.db_column, Question.content) ) for question in Question.select(): question.content = contents[question.id] question.save()