def migrate_to_current_version(engine, schema): # Changes to get to current version try: changeset = schema.changeset(None) except Exception as e: log.error("Problem determining migration changeset for engine [%s]" % engine) raise e for ver, change in changeset: nextver = ver + changeset.step log.info('Migrating %s -> %s... ' % (ver, nextver)) old_stdout = sys.stdout class FakeStdout(object): def __init__(self): self.buffer = [] def write(self, s): self.buffer.append(s) def flush(self): pass sys.stdout = FakeStdout() try: schema.runchange(ver, change, changeset.step) finally: for message in "".join(sys.stdout.buffer).split("\n"): log.info(message) sys.stdout = old_stdout
def migrate_to_current_version( engine, schema ): # Changes to get to current version changeset = schema.changeset( None ) for ver, change in changeset: nextver = ver + changeset.step log.info( 'Migrating %s -> %s... ' % ( ver, nextver ) ) schema.runchange( ver, change, changeset.step )
def migrate_to_current_version(engine, schema): # Changes to get to current version changeset = schema.changeset(None) for ver, change in changeset: nextver = ver + changeset.step log.info(f'Migrating {ver} -> {nextver}... ') old_stdout = sys.stdout class FakeStdout: def __init__(self): self.buffer = [] def write(self, s): self.buffer.append(s) def flush(self): pass sys.stdout = FakeStdout() try: schema.runchange(ver, change, changeset.step) finally: for message in "".join(sys.stdout.buffer).split("\n"): log.info(message) sys.stdout = old_stdout
def upgrade(engine): schema = migrate.versioning.schema.ControlledSchema(engine, self.repo_path) changeset = schema.changeset(None) for version, change in changeset: log.msg('migrating schema version %s -> %d' % (version, version + 1)) schema.runchange(version, change, 1)
def migrate_to_current_version(engine, schema): # Changes to get to current version changeset = schema.changeset(None) for ver, change in changeset: nextver = ver + changeset.step log.info('Migrating %s -> %s... ' % (ver, nextver)) old_stdout = sys.stdout class FakeStdout(object): def __init__(self): self.buffer = [] def write(self, s): self.buffer.append(s) def flush(self): pass sys.stdout = FakeStdout() try: schema.runchange(ver, change, changeset.step) finally: for message in "".join(sys.stdout.buffer).split("\n"): log.info(message) sys.stdout = old_stdout
def _migrate(url, repository, version, upgrade, err, **opts): engine = construct_engine(url, **opts) schema = ControlledSchema(engine, repository) version = _migrate_version(schema, version, upgrade, err) changeset = schema.changeset(version) for ver, change in changeset: nextver = ver + changeset.step print '%s -> %s... ' % (ver, nextver) if opts.get('preview_sql'): if isinstance(change, PythonScript): print change.preview_sql(url, changeset.step, **opts) elif isinstance(change, SqlScript): print change.source() elif opts.get('preview_py'): source_ver = max(ver, nextver) module = schema.repository.version(source_ver).script().module funcname = upgrade and "upgrade" or "downgrade" func = getattr(module, funcname) if isinstance(change, PythonScript): print inspect.getsource(func) else: raise UsageError("Python source can be only displayed" " for python migration files") else: schema.runchange(ver, change, changeset.step) print 'done'
def _migrate(url, repository, version, upgrade, err, **opts): engine = opts.pop('engine') url = str(engine.url) schema = ControlledSchema(engine, repository) version = _migrate_version(schema, version, upgrade, err) changeset = schema.changeset(version) for ver, change in changeset: nextver = ver + changeset.step log.info('%s -> %s... ', ver, nextver) if opts.get('preview_sql'): if isinstance(change, PythonScript): log.info(change.preview_sql(url, changeset.step, **opts)) elif isinstance(change, SqlScript): log.info(change.source()) elif opts.get('preview_py'): if not isinstance(change, PythonScript): raise exceptions.UsageError( "Python source can be only displayed" " for python migration files") source_ver = max(ver, nextver) module = schema.repository.version(source_ver).script().module funcname = upgrade and "upgrade" or "downgrade" func = getattr(module, funcname) log.info(inspect.getsource(func)) else: schema.runchange(ver, change, changeset.step) log.info('done')
def _migrate(url, repository, version, upgrade, err, **opts): engine = opts.pop('engine') url = str(engine.url) schema = ControlledSchema(engine, repository) version = _migrate_version(schema, version, upgrade, err) changeset = schema.changeset(version) for ver, change in changeset: nextver = ver + changeset.step log.info('%s -> %s... ', ver, nextver) if opts.get('preview_sql'): if isinstance(change, PythonScript): log.info(change.preview_sql(url, changeset.step, **opts)) elif isinstance(change, SqlScript): log.info(change.source()) elif opts.get('preview_py'): if not isinstance(change, PythonScript): raise exceptions.UsageError("Python source can be only displayed" " for python migration files") source_ver = max(ver, nextver) module = schema.repository.version(source_ver).script().module funcname = upgrade and "upgrade" or "downgrade" func = getattr(module, funcname) log.info(inspect.getsource(func)) else: schema.runchange(ver, change, changeset.step) log.info('done')
def upgrade(engine): schema = migrate.versioning.schema.ControlledSchema( engine, self.repo_path) changeset = schema.changeset(None) for version, change in changeset: log.msg('migrating schema version %s -> %d' % (version, version + 1)) schema.runchange(version, change, 1)
def upgrade(self, version=None): # This method was taken from Buildbot: https://github.com/buildbot/buildbot/blob/87108ec4088dc7fd5394ac3c1d0bd3b465300d92/master/buildbot/db/model.py#L455 # http://code.google.com/p/sqlalchemy-migrate/issues/detail?id=100 # means we cannot use the migrate.versioning.api module. So these # methods perform similar wrapping functions to what is done by the API # functions, but without disposing of the engine. schema = migrate.versioning.schema.ControlledSchema(self.engine, self.migrate_repo) changeset = schema.changeset(version) for step, change in changeset: self.log.debug('migrating schema version %s -> %d' % (step, step + 1)) schema.runchange(step, change, 1)
def thd(engine): try: schema = migrate.versioning.schema.ControlledSchema( engine, self.repo_path) except exceptions.DatabaseNotControlledError: migrate.versioning.schema.ControlledSchema.create( engine, self.repo_path, None) schema = migrate.versioning.schema.ControlledSchema( engine, self.repo_path) changeset = schema.changeset(None) for version, change in changeset: log.msg('migrating schema version %s -> %d' % (version, version + 1)) schema.runchange(version, change, 1)
def thd(engine): try: schema = migrate.versioning.schema.ControlledSchema(engine, self.repo_path) except exceptions.DatabaseNotControlledError: migrate.versioning.schema.ControlledSchema.create(engine, self.repo_path, None) schema = migrate.versioning.schema.ControlledSchema(engine, self.repo_path) changeset = schema.changeset(None) for version, change in changeset: log.msg('migrating schema version %s -> %d' % (version, version + 1)) schema.runchange(version, change, 1)
def _migrate(url,repository,version,upgrade,err,**opts): engine = create_engine(url) schema = cls_schema(engine,repository) version = _migrate_version(schema,version,upgrade,err) changeset = schema.changeset(version) for ver,change in changeset: nextver = ver + changeset.step print '%s -> %s... '%(ver,nextver), if opts.get('preview_sql'): print print change.log elif opts.get('preview_py'): source_ver = max(ver,nextver) module = schema.repository.version(source_ver).script().module funcname = upgrade and "upgrade" or "downgrade" func = getattr(module,funcname) print print inspect.getsource(module.upgrade) else: schema.runchange(ver,change,changeset.step) print 'done'
def _migrate(url, repository, version, upgrade, err, **opts): echo = 'True' == opts.get('echo', False) engine = create_engine(url, echo=echo) schema = cls_schema(engine, repository) version = _migrate_version(schema, version, upgrade, err) changeset = schema.changeset(version) for ver, change in changeset: nextver = ver + changeset.step print '%s -> %s... ' % (ver, nextver), if opts.get('preview_sql'): print print change.log elif opts.get('preview_py'): source_ver = max(ver, nextver) module = schema.repository.version(source_ver).script().module funcname = upgrade and "upgrade" or "downgrade" func = getattr(module, funcname) print print inspect.getsource(module.upgrade) else: schema.runchange(ver, change, changeset.step) print 'done'
def downgrade(self, version): schema = migrate.versioning.schema.ControlledSchema(self.engine, self.migrate_repo) changeset = schema.changeset(version) for step, change in changeset: self.log.debug('migrating schema version %s -> %d' % (step, step - 1)) schema.runchange(step, change, -1)