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))
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))