def Migrator(): if config.DATABASE['BACKEND'] == "sqlite": return migrate.SqliteMigrator(models.database) elif config.DATABASE['BACKEND'] == "mysql": return migrate.MySQLMigrator(models.database) else: raise ValueError( 'migrations are not supported for DB backend: {}'.format( config.DATABASE['BACKEND']))
def _handle_migrations(db, migrations, current_migrations): migrator = migrate.SqliteMigrator(db) for migration_name, migration_fn in migrations: if migration_name in current_migrations: continue logger.info('Running migration {}', migration_name) with db.atomic(): migration_fn(migrator) _record_migration(db, migration_name)
def main(): parser = argparse.ArgumentParser( description="Apply a named migration to the astrobotany database") parser.add_argument("migration") parser.add_argument("--db", default=settings.db) args = parser.parse_args() db = init_db(args.db) migrator = migrate.SqliteMigrator(db) print(f"Running migration {args.migration}...") MIGRATIONS[args.migration](migrator) print(f"Success!")
def update_db(): import playhouse.migrate as playhouse_migrate db_migrate = peewee.SqliteDatabase(db_filename, pragmas={ 'journal_mode': 'wal', 'cache_size': 64, 'foreign_keys': 0, 'ignore_check_constraints': 0, 'synchronous': 0 }) migrator = playhouse_migrate.SqliteMigrator(db_migrate) try: playhouse_migrate.migrate( migrator.add_column('RpProfile', 'show_link', peewee.BooleanField(default=0)), ) except Exception as e: print(e)
import copy import datetime from playhouse.sqliteq import SqliteQueueDatabase import warnings import textwrap __version__ = '0.0.1' # options data_root = os.path.join('..', 'data') db_name = 'project_sweeps.db' db = SqliteQueueDatabase(os.path.join(data_root, db_name), autoconnect=True) VERBOSE_RUN = True migrator = migrate.SqliteMigrator(db) type_to_field = { int: peewee.IntegerField, float: peewee.FloatField, bool: peewee.BooleanField, str: peewee.CharField, } try: introspected_models = reflection.Introspector.from_database(db)\ .generate_models(literal_column_names=True) except: # TODO: determine what errors to catch?? introspected_models = {}
import sys import peewee as pw from playhouse import migrate as pw_migrate import logging import datetime from .models import db, all_models, Migration from .store import FileStore schema_version = 4 lg = logging.getLogger('xiami.db') migrator = pw_migrate.SqliteMigrator(db) def table_exists(db, name): """ vscode python syntax analyzer thinks that db.table_exists will always raise NotImplementedError, thus code below are seen as unreachable and painted grey, this function is an ugly fix for this behavior. """ try: return db.table_exists(name) except NotImplementedError: pass def migrate(fs: FileStore): if table_exists(db, 'song'): # table 'song' exists means schema_version >= 2 if table_exists(db, 'migration'):
from playhouse import migrate import jwt import orm migrator = migrate.SqliteMigrator(orm.db) migrate.migrate( migrator.add_column('user', 'expires', migrate.IntegerField(default=0)), migrator.add_column('user', 'uid', migrate.IntegerField(null=True)), ) for user in orm.User.select(): payload = jwt.decode(user.token, verify=False) user.expires = payload['exp'] user.uid = payload['id'] user.save()
def createMigrator(dbFile): """ Create migrator to "dbFile" database file """ my_db = readPlayHouseDatabase(dbFile) return mgt.SqliteMigrator(my_db)