簡體   English   中英

使用Python部署數據庫更改

[英]Deploying database changes with 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以更改此db代碼,我想在從svn存儲庫中發現新內容時自動部署此代碼。

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

我應該解析每個文件嗎? 我應該炮轟psql嗎? ...

如果您控制所有服務器並且它們都是postgresql服務器,那么您所做的實際上是一種不錯的方法。

更通用的方法是創建一個“遷移”目錄,這些目錄通常是帶有apply()和undo()的類,它們實際上在數據庫中完成工作,並且通常帶有生成DDL指令的.create_table()等抽象。特定於您正在使用的任何RDBMS。

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

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

我們剛剛集成了sqlalchemy-migrate ,它具有一些非常漂亮的Rails慣例,但具有SQLAlchemy的強大功能。 它正在成為一個非常棒的產品,但它確實有一些垮台。 雖然整合起來非常無縫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM