示例#1
0
def migrate():
    histories = MigrationHistory.query().order(-MigrationHistory.performed_at).fetch(1)
    old_version = 0
    if len(histories) != 0:
        old_version = histories[0].version

    performed_migrations = []
    funcs = [(int(name[8:]), name, f) for name, f in inspect.getmembers(sys.modules[__name__]) if name.startswith('version_')]
    funcs.sort(key=lambda x: x[0])
    for i, name, f in funcs:
        if i <= old_version:
            continue
        f()

        history = MigrationHistory()
        history.version = i
        history.performed_at = datetime.now()
        history.put()

        performed_migrations.append(i)

    return performed_migrations