1. 程式人生 > >使用alembic進行openstack資料庫版本管理

使用alembic進行openstack資料庫版本管理

線上更新

1. alembic init <YOUR_DIR># 此處,我用的是alembic_v


2.修改alembic.ini。如下:

sqlalchemy.url = driver://user:[email protected]:port/dbname
	具體例項:
	sqlalchemy.url = mysql+mysqldb://storage:[email protected]/storagemgmt
解釋:
此部分替換成對應的資料庫連線,這個資料庫連線的寫法是與SQLAlchemy建立engine時是一樣的。

比如使用SQLAlchemy與mysqldb,那資料庫連線就是如上“具體例項所示”。

3. 修改en.py。把target_metadata = None,改為如下:
import osimport sys# 此處需要將專案路徑新增到sys.path,否則from import時找不到
modelssys.path.append(os.path.dirname(os.path.abspath(__file__)) + "/../")
from models.base import Base
Modeltarget_metadata = BaseModel.metadata
解釋:在env.py中,將target_metadata設定成專案的model,使alembic能獲取到專案中model定義的資訊
如:我的models.py的目錄如下,那麼應該如此匯入。
/usr/lib/python2.7/site-packages/storagemgmt/storage/sqlalchemy/models.py


其中Base是在models.py中定義的,如下:

4. 建立新的版本。

alembic revision --autogenerate -m "init db"
解釋:用 alembic revision -m+註釋 建立資料庫版本. “版本號+註釋”就是版本檔案的名字。
	這個命名規則是在配置檔案中定義的。

5.更新資料庫

alembic upgrade head

6.將資料庫降級到最初版本.

alembic downgrade base

7.將資料庫降級到執行版本

使用alembic downgrade+版本號,不包含註釋部分.

alembic downgrade <version>
如: alembic downgrade 0e8e73745ff2

離線更新

在某些不適合線上更新的情況,可以採用生成sql指令碼的形式,進行離線更新:

alembic upgrade <version> --sql > migration.sql
如:

alembic upgrade ae1027a6acf --sql > migration.sql
從特定起始版本生成sql指令碼:

alembic upgrade <vsersion>:<vsersion> --sql > migration.sql
如:

alembic upgrade 1975ea83b712:ae1027a6acf --sql > migration.sql
如果是資料庫降級操作,把upgrade替換為downgrade。

Reference:

https://docs.openstack.org/developer/neutron/devref/alembic_migrations.html 

相關推薦

使用alembic進行openstack資料庫版本管理

線上更新 1. alembic init <YOUR_DIR># 此處,我用的是alembic_v 2.修改alembic.ini。如下: sqlalchemy.url = driver

使用alembic進行資料庫版本管理

Alembic簡介: SQLAlchemy是一款非常優秀的ORM框架, 但是本身沒有戴資料庫版本控制功能, 這很不方便, 進行開發過程中難免修改資料模型, 新增一個表, 修改一個欄位, 都需要手動修改就比較費事. 在這裡介紹一款SQLAlchemy作者寫的資料庫版本控制工

springboot 使用 flyway 進行資料庫版本管理

開發十年,就只剩下這套架構體系了! >>>   

在SpringBoot中使用flyway進行資料庫版本管理

本文大綱 flyway是什麼 能幫助我們解決什麼問題 springboot環境下使用flyway flyway的工作原理 一、flyway是什麼 Flyway是一個開源的資料庫版本管理工具,並且極力主張“約定大於配置”,簡單、專注、強大。可以使用SQL完成資料同步,或者基於特定資料庫的語法(例如PL

SpringBoot結合Flyway實現資料庫版本管理及配置檔案說明

SpringBoot結合Flyway實現資料庫版本管理及配置檔案說明 文章目錄 前言 例項 其它配置 拓展 前言 Flyway是個很好的資料庫版本管理工具,根據版本號順序執行sql檔案,維護一個統一的資料庫,適用於多人協作

Android SQLite資料庫:增、刪、改、查,以及資料庫版本管理

建立資料庫版本v.1 /** * 作者:created by meixi * 郵箱:[email protected] * 日期:2018/10/9 11 */ public class DBHelper extends SQLiteOpenHelper

Spring boot 整合資料庫版本管理工具-flyway

步驟: 1:在pom檔案中新增Flyway的maven依賴 org.flywaydb flyway-core 4.1.2 2:在resource目錄下建立資料庫sql集合資料夾,Flyway預設該資料夾名字為:db/migration 3:在applicat

利用anaconda進行python多版本管理

本文主要介紹如何通過conda create 建立一個只含標準模組和幾個必需第三方模組(如 pip、wheel)的python環境,快速方便管理多個python2和python3,並實現快速切換。 1、前提:     可以開啟命令列輸入conda -V檢驗是否安裝

Deltasql 資料庫版本管理工具學習筆記

一.Deltasql 功能 二.Deltasql伺服器端和客戶端的安裝     2.1 Deltasql伺服器端的安裝      2.2 Deltasql客戶端的安裝 三.Deltasql的使用 四.

Oracle PL/SQL Developer集成TFS進行團隊腳本文件版本管理

後臺數據庫 管理工具 下載地址 oracle 客戶端 對於傳統的使用關系型數據庫的大型軟件產品,後臺數據庫的持續開發和維護可能會產生大量的腳本文件,針對這些腳本文件應該怎樣比較方便的進行版本管理,以及如何快捷的在團隊之間進行權限等協作管理呢?不同的數據庫產品以及相應的客戶端管理工具與不同產

使用git進行版本管理

1.master分支  存放的應該是隨時可供在生產環境中部署的程式碼  當開發活動告一段落,產生了一份新的可供部署的程式碼時,master分支上的程式碼會被更新。同時,每一次更新,都有對應的版本號標籤(TAG)。  分支命名:master  該分支,由管理員負

DJANGO專案用WEB的方式對MYSQL資料庫進行備份匯出等管理任務的實現

環境:PYTHON2.7,DJANGO1.9.9 urls.py 加一行: url(r'^mysqldatamanage/', views.mysqldatamanage,name='mysqldatamanage'),   views.py新增對應的方mysqldatam

Spring Boot 基礎系列教程 | 第十八篇:使用Flyway來管理資料庫版本

推薦 Spring Boot/Cloud 視訊: 如果沒有讀過上面內容的讀者,有興趣的可以一閱。在前面的使用JdbcTemplate一文中,主要通過spring提供的JdbcTemplate實現對使用者表的增刪改查操作。在實現這個例子的時候,我們事先在MySQ

python 64式: 第20式、sqlalchemy進行資料庫操作與alembic進行資料庫升級

文章目錄編排如下: 1 引言 2 使用sqlalchemy實現資料庫增刪改查 3 使用alembic進行資料庫升級 4 總結 1 引言 sqlalchemy是python專案採用的ORM(物件關係對映),主要用於資料庫相關的操作。 而alembic是與sqlalchemy搭配使用的資料庫升

你還在生產環境改程式碼麼?函式計算版本管理(三)使用別名進行灰度釋出

通過了解阿里雲函式計算新功能版本管理在事件驅動模式中的使用,我們看到了別名是如何簡化新版本上線的過程的。然而現實是殘酷的,直接更改別名指向的版本來升級服務時,往往會出現新版本引入帶來的不穩定,有沒有更好的方法呢?別名的灰度釋出功能該登場了。函式計算提供的別名,可以指向一個主版本和一個灰度版本,並指定灰度版本的

學生管理系統(資料庫版本)(sqlite3版本);淺析資料庫的基礎用法及實際操作

大家好,我是道長王也。如果我不學程式碼, 就要回家繼承千億家產。我不想那樣,我不想讓就金錢腐蝕我的靈魂,我想通過自己的努力去過自己想要的人生。好了閒話不說。 今天我們來淺談資料庫(為什麼說淺談,因為往深了說勞資不會!) 引題 為什麼使用資料庫: 之前的學習中我們

Window環境下安裝nvm進行node版本管理切換

為什麼要使用nvm? 現如今很多前端框架都是基於nodejs,同時NPM(包管理工具)也整合到新版的nodejs中,所以不需要單獨的安裝NPM,只要系統安裝了nodejs就可以使用npm install安裝其他人編寫的第三方包,有些第三方包升級後,低版本的nodejs無法安裝成功,這個時候需

使用git進行專案版本管理

為規範原始碼版本管理,現將各分支表述如下:1.master分支 存放的應該是隨時可供在生產環境中部署的程式碼 當開發活動告一段落,產生了一份新的可供部署的程式碼時,master分支上的程式碼會被更新。同時,每一次更新,都有對應的版本號標籤(TAG)。 分支命名:master 

IntelliJ IDEA 在使用Subversion進行版本管理時,怎麼忽略某個檔案或者資料夾

可以在Changes檢視中選擇local changes這個tab設定: 點選右鍵選擇new changelist或點選下圖加號 新建changelist後,將想忽略的檔案move到這個

WebStorm建立nodejs Express工程(node js web 開發),並進行git版本管理

2. 填寫相關資訊(windows下node環境配置,可直接在官網下載安裝程式按照程式指示步驟安裝(我的node安裝到了D:/soft/node目錄下 了)) 3. 建立後通過快捷鍵Alt+1切換到專案檢視 4. 可點選執行,控制檯日誌輸出監聽埠3000