Схема тестирования Django и postgresql

Я использую PostgreSQL 9.3 и Django 1.7.4 с psycopg2 2.5.4

Администратор баз данных попросил нас создать схему для нашего приложения вместо использования public.

Мы определили схему, и нам пришлось добавить

'OPTIONS': {
    'options': '-c search_path=custom-schema-name'
},

к настройкам.

Во время тестирования Django создает тестовую базу данных с соответствующим именем, но мы не можем установить имя пользовательской схемы

Я попытался найти способ настроить имя пользовательской схемы (я прочитал the docs ), но я не могу найти способ принудительно создать имя схемы во время тестирования.

я получаю ошибку

django.db.utils.ProgrammingError: схема не была выбрана для создания в

Когда я вижу созданную базу данных, по умолчанию создается открытая схема.

Я частично решил эту проблему и добавил в путь поиска имя схемы public

'OPTIONS': {
    'options': '-c search_path=custom-schema-name,public'
},

но я бы хотел создать тестовую базу данных с произвольным именем схемы.

Кто-нибудь знает, как установить имя схемы тестирования?

4 голоса | спросил Jorge Omar Vazquez 10 J000000Friday15 2015, 20:15:11

1 ответ


0

Я решил написать собственный тестовый прогон для решения этой проблемы (используя django 1.9.x):

MyApp /тест /runner.py

from types import MethodType
from django.test.runner import DiscoverRunner
from django.db import connections

def prepare_database(self):
    self.connect()
    self.connection.cursor().execute("""
    CREATE SCHEMA foobar_schema AUTHORIZATION your_user;
    GRANT ALL ON SCHEMA foobar_schema TO your_user;
    """)


class PostgresSchemaTestRunner(DiscoverRunner):

    def setup_databases(self, **kwargs):
        for connection_name in connections:
            connection = connections[connection_name]
            connection.prepare_database = MethodType(prepare_database, connection)
        return super().setup_databases(**kwargs)

settings.py

TEST_RUNNER = 'myapp.test.runner.PostgresSchemaTestRunner'
ответил dahrens 16 J0000006Europe/Moscow 2016, 17:16:37

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132