摘要:可以處理定義的數(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 └── versions2. 編輯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 -16. 建議
不要自己去寫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
摘要:當(dāng)使用到后者這類微型框架時(shí),根據(jù)業(yè)務(wù)場景不同,如果需要處理模型的建立升級和遷移的問題,可以考慮下接下來要介紹的和。這時(shí)候檢查數(shù)據(jù)庫,可以發(fā)現(xiàn)生成了張表,升級工作就完成了。而我在使用的實(shí)際項(xiàng)目中是操作的原生,異步類型的配合使用留待以后探究。 背景 Python的世界里有許多web框架:比如大而全的 Django, 提供了模型定義遷移,到路由處理,再到視圖的渲染等整套功能;比如小巧靈活的F...
摘要:是的一個(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ù)庫引擎(...
摘要:在實(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)目都需要做的...
閱讀 1499·2021-11-24 11:16
閱讀 2707·2021-07-28 12:32
閱讀 2313·2019-08-30 11:22
閱讀 1453·2019-08-30 11:01
閱讀 609·2019-08-29 16:24
閱讀 3555·2019-08-29 12:52
閱讀 1635·2019-08-29 12:15
閱讀 1345·2019-08-29 11:18