使用Flask Migrate 時一定要謹慎!

2021-09-10 23:51:20 字數 1596 閱讀 7139

謹慎使用flask-migrate !

謹慎使用flask-migrate !

謹慎使用flask-migrate !

flask-migrate是基於alembic的一款flask運算元據庫外掛程式,可以用來更新資料庫。

它的工作步驟分三步:

初始化,並記錄該資料庫下的所有資料表

對比修改後的資料表,並生成乙個version表,用於記錄與需要修改,更新的地方。

更新。這樣看起來是不是便捷舒適,甜美可人,像和初戀第手牽手吹著5月的晚風那樣愜意。其實不然,如果你是多個程式共用乙個資料庫的話,你就會很難受。

因為,當你執行第二步的時候它就會把除了該程式之外的所有資料表都記錄下來準備刪除,一但你執行第三步,那麼,那些非該程式的所有資料表都會被刪除!!!

多麼不留情面,多麼殘忍,像極了你的前任甩你時的冷酷無情。

但是,就像你的好朋友總是會和ta的前任復合一樣,flask-migarate也會幫你把丟失的資料表找回來,因為,它會在執行第二步的時候生成另乙個函式——還原函式,這樣,你只需要再執行一下downgrade()函式,就可以使資料回滾到如初。酸不酸,是不是像極了別人的愛情,檸檬精。

flask-migrate它的使用如下:

from flask_script import manager

from flask_migrate import migrate, migratecommand

manager.add_command('db', migratecommand)

if __name__ =="__main__":

manager.run()

python manage.py db init

python manage.py db migrate -m "first_update"
-m 後的""中可以隨便寫,是你這次更新的名字。

python manage.py db upgrade
有可能出現資料庫主鍵錯誤,你可以在生成的migrations下的env.py中找到run_migrations_online函式,在context.configure中新增一句 render_as_batch=true

context.configure(connection=connection,

target_metadata=target_metadata,

process_revision_directives=process_revision_directives,

compare_type=true, # 檢查字段型別

compare_server_default=true, # 比較預設值

render_as_batch=true, # 就是這句

然後把version下的那次更新檔案刪除了,重新執行上面的3,4步,這次應該就行了。

不過,刪除之前一定要確保你是不需要還原了的,這一刪就像你的前任一樣,永遠不會回來了。

不對,醒醒,你沒有前任...

Flask Migrate模組使用

flask migrate可以十分方便的進行資料庫的遷移與對映,將我們修改過的orm模型對映到資料庫中。另外flask migrate是對alembic的乙個封裝,其實它的底層是交由alembic來處理的。使用起來十分方便。在flask專案中使用flask migrate,我採用下面的結構。專案 的...

使用Flask Migrate進行管理資料庫公升級

我們在公升級系統的時候,經常碰到需要更新伺服器端資料結構等操作,之前的方式是通過手工編寫alter sql指令碼處理,經常會發現遺漏,導致程式發布到伺服器上後無法正常使用。現在我們可以使用flask migrate外掛程式來解決之,flask migrate外掛程式是基於alembic,alembi...

Flask擴充套件 Flask Migrate用法

引用官方文件的話,flask migrate是使用alembic遷移flask應用程式的sqlalchemy資料庫的擴充套件,可以通過flask命令列或者flask script擴充套件對資料庫進行操作。該擴充套件主要用於遷移資料庫。傳統操作flask資料庫一般使用sqlalchemy,表的初始化使...