成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專(zhuān)欄INFORMATION COLUMN

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

CastlePeaK / 3505人閱讀

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

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

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

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

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

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

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

4. alembic處理升級(jí)

alembic在處理數(shù)據(jù)庫(kù)升級(jí)時(shí), 需要知道當(dāng)前的數(shù)據(jù)庫(kù)更新到了哪個(gè)升級(jí)腳本, 在數(shù)據(jù)庫(kù)中會(huì)有alembic_version記錄這一項(xiàng), 如果沒(méi)有的話, 需要運(yùn)行alembic history來(lái)查看當(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ù)庫(kù)是由c13aac80dc0d對(duì)應(yīng)的腳本升級(jí)上來(lái)的, 那么執(zhí)行alembic stamp c13aac80dc0d來(lái)更新數(shù)據(jù)庫(kù), 表明當(dāng)前數(shù)據(jù)庫(kù)對(duì)應(yīng)到了這個(gè)腳本, 此時(shí)可以執(zhí)行alembic current來(lái)查看確實(shí)是這個(gè)
版本.

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

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

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

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/yun/38348.html

相關(guān)文章

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

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

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

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

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

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

    mingzhong 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<