成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

alembic生成數(shù)據(jù)庫升級腳本

CastlePeaK / 3466人閱讀

摘要:可以處理定義的數(shù)據(jù)庫的升級生成可配置的升級腳本編輯文件來建立與數(shù)據(jù)庫實(shí)體之間的關(guān)聯(lián)改成和自己的數(shù)據(jù)庫相對應(yīng)編輯來與建立關(guān)聯(lián)定義了數(shù)據(jù)庫與類之間的映射為了關(guān)聯(lián)與需要修改在定義數(shù)據(jù)庫表時(shí)我們需要繼承這時(shí)可以改成即可如果是用的庫可以改成處理升級在

alembic可以處理sqlalchemy定義的數(shù)據(jù)庫的升級.

1. 生成可配置的升級腳本 alembic init update
.
├── alembic.ini
└── update
    ├── env.py
    ├── env.pyc
    ├── README
    ├── script.py.mako
    └── versions
2. 編輯alembic.ini文件來建立alembic與數(shù)據(jù)庫實(shí)體之間的關(guān)聯(lián)
sqlalchemy.url = driver://user:pass@localhost/dbname

改成和自己的數(shù)據(jù)庫engine相對應(yīng)

3. 編輯env.py來與sqlalchemy建立關(guān)聯(lián)

sqlalchemy定義了數(shù)據(jù)庫與類之間的映射, 為了關(guān)聯(lián)alembic與sqlalchemy, 需要修改target_metadata = None

在定義數(shù)據(jù)庫表時(shí), 我們需要繼承Base = declarative_base(), 這時(shí)可以改成target_metadata = Base.metadata即可. 如果是用的elixir庫, 可以改成target_metadata = elixir.metadata

4. alembic處理升級

alembic在處理數(shù)據(jù)庫升級時(shí), 需要知道當(dāng)前的數(shù)據(jù)庫更新到了哪個(gè)升級腳本, 在數(shù)據(jù)庫中會有alembic_version記錄這一項(xiàng), 如果沒有的話, 需要運(yùn)行alembic history來查看當(dāng)前的腳本之間的前后繼關(guān)系

c13aac80dc0d -> a6bd6b66dc68 (head), v1.0.6
8af8ba526412 -> c13aac80dc0d, 12_27
c07041b991dd -> 8af8ba526412, v1.0.4
d9e1223a5cc6 -> c07041b991dd, 002_update_for_12.2
 -> d9e1223a5cc6, v1.0.2

如果我確定我當(dāng)前的數(shù)據(jù)庫是由c13aac80dc0d對應(yīng)的腳本升級上來的, 那么執(zhí)行alembic stamp c13aac80dc0d來更新數(shù)據(jù)庫, 表明當(dāng)前數(shù)據(jù)庫對應(yīng)到了這個(gè)腳本, 此時(shí)可以執(zhí)行alembic current來查看確實(shí)是這個(gè)
版本.

之后, 可以基于當(dāng)前的數(shù)據(jù)庫與我們已經(jīng)定義好的表之間自動生成升級腳本alembic revision --autogenerate -m "create update files", 可能還需要改一些語句, 或者數(shù)據(jù)庫表之間的關(guān)系的調(diào)整還涉及到數(shù)據(jù)>記錄的內(nèi)容更改與填充.

5. 升降級命令
alembic upgrade +1
alembic downgrade -1
6. 建議

不要自己去寫python或者Sql腳本創(chuàng)建數(shù)據(jù)庫實(shí)體, 建議從一開始就用alembic操作數(shù)據(jù)庫. 就是說在項(xiàng)目里面跟數(shù)據(jù)庫相關(guān)的操作, 只需要定義好了orm, 之后代碼里面做增刪查改就夠了. 其它的創(chuàng)建數(shù)據(jù)庫, 創(chuàng)建表
, 更改表結(jié)構(gòu)的操作都由alembic來接管.

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/38348.html

相關(guān)文章

  • Python數(shù)據(jù)模型構(gòu)建和遷移方案:SQLAlchemy&Alembic

    摘要:當(dāng)使用到后者這類微型框架時(shí),根據(jù)業(yè)務(wù)場景不同,如果需要處理模型的建立升級和遷移的問題,可以考慮下接下來要介紹的和。這時(shí)候檢查數(shù)據(jù)庫,可以發(fā)現(xiàn)生成了張表,升級工作就完成了。而我在使用的實(shí)際項(xiàng)目中是操作的原生,異步類型的配合使用留待以后探究。 背景 Python的世界里有許多web框架:比如大而全的 Django, 提供了模型定義遷移,到路由處理,再到視圖的渲染等整套功能;比如小巧靈活的F...

    李增田 評論0 收藏0
  • sqlalchemy學(xué)習(xí)筆記

    摘要:是的一個(gè)數(shù)據(jù)庫工具,提供了強(qiáng)大的對象模型間的轉(zhuǎn)換,可以滿足絕大多數(shù)數(shù)據(jù)庫操作的需求,并且支持多種數(shù)據(jù)庫引擎,,等,在這里記錄基本用法和學(xué)習(xí)筆記一安裝通過安裝二使用首先是連接到數(shù)據(jù)庫,支持多個(gè)數(shù)據(jù)庫引擎,不同的數(shù)據(jù)庫引擎連接字符串不一樣,常用 SQLAlchemy是python的一個(gè)數(shù)據(jù)庫ORM工具,提供了強(qiáng)大的對象模型間的轉(zhuǎn)換,可以滿足絕大多數(shù)數(shù)據(jù)庫操作的需求,并且支持多種數(shù)據(jù)庫引擎(...

    YPHP 評論0 收藏0
  • 通過demo學(xué)習(xí)OpenStack開發(fā)所需的基礎(chǔ)知識 -- 數(shù)據(jù)庫(2)

    摘要:在實(shí)際項(xiàng)目中,這么做肯定是不行的實(shí)際項(xiàng)目中不會使用內(nèi)存數(shù)據(jù)庫,這種數(shù)據(jù)庫一般只是在單元測試中使用。接下來,我們將會了解中單元測試的相關(guān)知識。 在上一篇文章,我們介紹了SQLAlchemy的基本概念,也介紹了基本的使用流程。本文我們結(jié)合webdemo這個(gè)項(xiàng)目來介紹如何在項(xiàng)目中使用SQLAlchemy。另外,我們還會介紹數(shù)據(jù)庫版本管理的概念和實(shí)踐,這也是OpenStack每個(gè)項(xiàng)目都需要做的...

    mingzhong 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<