Пример #1
0
def setup_db(config: Settings) -> None:
    """Настройка тестовой БД.

    Удаляем старую тестовую базу и создаем новую.
    """
    engine = get_engine(config.DATABASE.SUPERUSER_DSN)

    with engine.connect() as conn:
        teardown_db(config)

        test_db_name = parse_dsn(config.DATABASE.DSN)['database']
        conn.execute('CREATE DATABASE {0}'.format(test_db_name))
Пример #2
0
def teardown_db(config: Settings) -> None:
    """Удаление тестовой БД."""
    engine = get_engine(config.DATABASE.SUPERUSER_DSN)

    test_db_name = parse_dsn(config.DATABASE.DSN)['database']
    with engine.connect() as conn:
        # Отключаем активные сессии
        conn.execute(
            """
            SELECT pg_terminate_backend(pg_stat_activity.pid)
            FROM pg_stat_activity
            WHERE pg_stat_activity.datname = '{0}' AND pid <> pg_backend_pid();
            """.format(test_db_name), )
        # Удаляем базу
        conn.execute('DROP DATABASE IF EXISTS {0}'.format(test_db_name))