Развертывание изменений базы данных с помощью Python - PullRequest
0 голосов
/ 25 февраля 2011

Мне интересно, может ли кто-нибудь порекомендовать хороший шаблон для развертывания изменений базы данных через python.

В моем сценарии у меня есть одна или несколько баз данных PostgreSQL, и я пытаюсь развернуть базу кода для каждой из них.Вот пример структуры каталогов для моих сценариев SQL:


my_db/
    main.sql
    some_directory/
        foo.sql
        bar.sql
    some_other_directory/
        baz.sql

Вот пример того, что находится в main.sql


/* main.sql has the following contents: */
BEGIN TRANSACTION
\i some_directory/bar.sql
\i some_directory/foo.sql
\i some_other_directory/baz.sql
COMMIT;

Как видите, main.sql определяет конкретныйпорядок операций и транзакции для обновления базы данных.

У меня также есть SVN-служба мониторинга Python / витая на предмет изменений в этом коде БД, и я хотел бы автоматически развернуть этот код при обнаружении нового материала из репозитория svn.

Может кто-нибудь порекомендовать хороший шаблон для использования здесь?

Должен ли я анализировать каждый файл?Должен ли я обстреливать PSQL?...

Ответы [ 2 ]

1 голос
/ 25 февраля 2011

Мы только что интегрировали sqlalchemy-migrate , которая имеет несколько симпатичных Rails-подобных соглашений, но с мощью SQLAlchemy. Он готовится стать действительно потрясающим продуктом, но у есть некоторые недостатки. Это довольно легко интегрировать.

1 голос
/ 25 февраля 2011

То, что вы делаете, на самом деле является достойным подходом, если вы контролируете все серверы, и все они являются серверами postgresql.

Более общий подход заключается в том, чтобы иметь каталог «миграций», которые обычно являются классамис apply () и undo (), которые фактически выполняют работу в вашей базе данных, и часто поставляются с абстракциями, такими как .create_table (), которые генерируют инструкции DDL, специфичные для любой используемой СУБД.

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

Существует библиотека миграции для python с именем South, хотя, похоже, она специально предназначена для разработки django.http://south.aeracode.org/docs/about.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...