2011-02-25 76 views
0

我想知道是否有人可以推薦一個好的模式來通過python部署數據庫更改。使用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定義的動作的具體順序,數據庫更新的事務。

我也得到了一個python/twisted服務監視SVN在這個數據庫代碼中的變化,我想從svn倉庫發現新的東西時自動部署這段代碼。

有人可以推薦一個好的模式在這裏使用?

我應該解析每個文件嗎? 我應該對psql進行脫殼嗎? ...

回答

1

如果你控制所有的服務器,並且他們都是postgresql服務器,你所做的實際上是一個體面的方法。

一個更普遍的方法是讓「遷移」,這通常是類與應用()和撤消(),實際上做的工作在你的數據庫的目錄,並往往帶有 抽象,如.create_table()生成特定於您正在使用的任何RDBMS的DDL指令。

通常,您有一些命名約定可確保遷移按創建順序運行。

有一個名爲South的python遷移庫,儘管它似乎專門針對django開發。 http://south.aeracode.org/docs/about.html

1

我們剛剛集成了sqlalchemy-migrate,它有一些漂亮的類似Rails的約定,但具有SQLAlchemy的強大功能。它正在成爲一個非常棒的產品,但它有一些倒臺。雖然整合非常完美。

相關問題