Пример #1
0
def rollback(name):
    """
    Rolls back migration
    """
    migrator = Router(db, logger=LOGGER)
    migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations')
    migrator.rollback(name)
Пример #2
0
def makemigrations(name='auto'):
    """
    Makes migrations
    """
    migrator = Router(db, logger=LOGGER)
    migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations')
    migrator.create(name=name, auto='project.application.models')
Пример #3
0
def migrate(name=None):
    """
    Runs migrations
    """
    migrator = Router(db, logger=LOGGER)
    migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations')
    migrator.run(name=name)
Пример #4
0
def async_db(request):
    """
    Фикстура для асинхронного взаимодействия с базой PostgreSQL через PeeWee ORM
    """
    # Создание базы
    process = Popen(['createdb', TEST_DB])
    process.communicate()
    db.allow_sync = True
    # Миграции
    migrator = Router(db)
    migrator.migrate_dir = os.path.join(base_dir, 'application', 'migrations')
    migrator.run()

    db.allow_sync = False

    def teardown():
        terminate_sql = ("SELECT pg_terminate_backend(pg_stat_activity.pid) "
                         "FROM pg_stat_activity "
                         "WHERE pg_stat_activity.datname = '%s' "
                         "AND pid <> pg_backend_pid();" % TEST_DB)
        process = Popen(['psql', '-c', terminate_sql])
        process.communicate()
        process = Popen(['dropdb', TEST_DB])
        process.communicate()

    request.addfinalizer(teardown)
    return db