2011-02-25 3 views
0

누군가 파이썬을 통해 데이터베이스 변경을 배치하는 좋은 패턴을 추천 할 수 있는지 궁금합니다.파이썬으로 데이터베이스 변경 배치하기

필자의 시나리오에서는 하나 이상의 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이 작업의 특정 순서를 정의하고 데이터베이스 업데이트를위한 트랜잭션.

나는 또한이 db 코드의 변경에 대한 SVN 모니터링을위한 비단뱀/트위스트 서비스를 가지고 있는데, 나는이 코드를 svn 저장소에서 새 물건을 발견 할 때 자동으로 배포하려고합니다.

누군가이 좋은 패턴을 사용하도록 권장 할 수 있습니까?

각 파일을 구문 분석해야합니까? psql에 대한 포팅을해야합니까? ...

답변

1

모든 서버를 제어하고 모든 포스트그레스 (PostgreSQL) 서버를 사용한다면 실제로하는 것은 괜찮은 접근 방식입니다.

보다 일반적인 접근 방식은 일반적으로 데이터베이스에서 실제로 작업을 수행하는 apply() 및 undo()가있는 클래스 인 "migrations"디렉토리를 갖는 것입니다. 종종 .create_table()과 같은 추상화가 사용됩니다 ( ) 사용중인 RDBMS와 관련된 DDL 명령어를 생성합니다.

일반적으로 생성 된 순서대로 마이그레이션이 실행되도록하는 명명 규칙이 있습니다.

남미라고 불리는 Python 용 마이그레이션 라이브러리가 있는데, 장고 개발을 위해 특별히 개발 된 것 같습니다. http://south.aeracode.org/docs/about.html

1

sqlalchemy-migrate에는 Rails와 비슷한 규칙이 있지만 SQLAlchemy 기능이 있습니다. 그것은 정말 멋진 제품으로 형성되고 있지만, 에 약간의 실수가 있습니다. 그래도 완벽하게 통합 할 수 있습니다.