Как мне проверить сайт Django, который использует UDF в базе данных? - PullRequest
2 голосов
/ 17 апреля 2011

У меня есть проект django, который использует базу данных postgres с несколькими UDF.UDFs написаны на plpythonu.Поскольку plpyhtonu является ненадежным языком, только суперпользователи базы данных могут использовать его для создания пользовательских функций.Это создает серьезную проблему, поскольку у меня нет возможности программно создавать их в тестовом наборе.Прямо сейчас я вижу две опции:

  1. Измените django.db.backends.creation._create_test_db, чтобы создать тестовую базу данных из шаблона, в который уже загружены мои пользовательские функции.Это кажется хакерским и трудоемким в обслуживании.
  2. Создайте суперпользователя с аутентификацией MD5 и загрузите пользовательские функции в набор тестов с помощью psycopg2.Это кажется небезопасным.

Есть ли менее ужасные способы, которыми я могу это сделать?

Спасибо.

Ответы [ 2 ]

1 голос
/ 18 апреля 2011

Я не знаю модель PG UDF, только модели MySQL и SQLite. Некоторые другие обходные пути могут быть:

  1. Создайте экземпляр PG, который вы используете только для тестирования, изолированный, чтобы не было проблем с безопасностью. В конце концов, базы данных дешевы.
  2. Если пользовательские функции просты (или размер тестовых данных делает их простыми), воссоздайте их в SQLite и используйте эту базу данных для тестирования. Это предполагает, что вам не нужно тестировать функциональность plpython как часть проекта.
  3. Если функциональность UDF намного более стабильна, чем остальная часть проекта, то разделите код UDF на собственный подпроект, а для остальной части кода предположите, что UDF будут присутствовать. По крайней мере, это сделает так, что большая часть кода может быть автоматизирована, и только код UDF нуждается в ручном вмешательстве для указания пароля.
0 голосов
/ 08 июня 2011

Я пошел с # 1.Это не идеально, но работает нормально.

...