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

資訊專欄INFORMATION COLUMN

Essential SQLAlchemy2th學(xué)習(xí)筆記之Alembic數(shù)據(jù)庫(kù)遷移

cartoon / 2606人閱讀

摘要:默認(rèn)的可以增量式創(chuàng)建數(shù)據(jù)庫(kù)缺失的表,但是無(wú)法做到修改已有的表結(jié)構(gòu),或刪除代碼中已經(jīng)移除的表。這個(gè)時(shí)候我們就需要用到這個(gè)庫(kù)。

SQLAlchemy默認(rèn)的create_all()可以增量式創(chuàng)建數(shù)據(jù)庫(kù)缺失的表,但是無(wú)法做到修改已有的表結(jié)構(gòu),或刪除代碼中已經(jīng)移除的表。這個(gè)時(shí)候我們就需要用到Alembic這個(gè)SQLAlchemy migrations庫(kù)。
安裝:pip install alembic
官方文檔:http://alembic.zzzcomputing.c...

Creating the Migration Environment

創(chuàng)建一個(gè)目錄,然后在這個(gè)目錄下執(zhí)行

alembic init migrations

這便創(chuàng)建了migrations目錄,該目錄結(jié)構(gòu)如下:
├──
│ ├── README
│ ├── env.py
│ ├── script.py.mako
│ └── versions
└── alembic.ini
env.py配置:

sqlalchemy.url = sqlite:///alembictest.db
from app.db import Base
target_metadata = Base.metadata
Building Migrations

自動(dòng)生成一個(gè)Base Empty Migration

alembic revision -m "Empty Init"

升級(jí)數(shù)據(jù)庫(kù)到最新版本

alembic upgrade head

自動(dòng)生成新版本:

alembic revision --autogenerate -m "Added Cookie model"

當(dāng)然你也可以手動(dòng)修改它。
一些常見的Alembic操作函數(shù)如下:

函數(shù) 說明
add_column Adds a new column
alter_column Changes a column type, server default, or name
create_check_constraint Adds a new CheckConstraint
create_foreign_key Adds a new ForeignKey
create_index Adds a new Index
create_primary_key Adds a new PrimaryKey
create_table Adds a new table
create_unique_constraint Adds a new UniqueConstraint
drop_column Removes a column
drop_constraint Removes a constraint
drop_index Drops an index
drop_table Drops a table
execute Run a raw SQL statement
rename_table Renames a table

注意:并不是所有的backend database都支持這些函數(shù),比如SQLite不支持alter_column,drop_column

Controlling Alembic

查看現(xiàn)有數(shù)據(jù)庫(kù)的遷移版本:

alembic current

顯示歷史

alembic history

版本降級(jí)

alembic downgrade 34044511331

手動(dòng)修改數(shù)據(jù)庫(kù)的遷移版本:

alembic stamp 2e6a6cc63e9

生成SQL

#Upgrading from 34044511331 to 2e6a6cc63e9  sql
alembic upgrade 34044511331:2e6a6cc63e9 --sql
alembic upgrade 34044511331:2e6a6cc63e9 --sql > migration.sql

更多參考這里

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

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

相關(guān)文章

  • Essential SQLAlchemy2th學(xué)習(xí)筆記自動(dòng)生成代碼

    摘要:支持從現(xiàn)有數(shù)據(jù)庫(kù)自動(dòng)生成代碼,并支持一對(duì)多,一對(duì)一,多對(duì)多的關(guān)聯(lián)關(guān)系。生成整個(gè)庫(kù)的代碼指定表保存到指定文件 pip install sqlacodegen sqlacodegen支持從現(xiàn)有數(shù)據(jù)庫(kù)自動(dòng)生成ORM代碼,并支持一對(duì)多,一對(duì)一,多對(duì)多的關(guān)聯(lián)關(guān)系。 #生成整個(gè)庫(kù)的代碼 sqlacodegen sqlite:///Chinook_Sqlite.sqlite #指定表 sqlacod...

    Sleepy 評(píng)論0 收藏0
  • Essential SQLAlchemy2th學(xué)習(xí)筆記反射Reflection

    摘要:基于反射對(duì)象進(jìn)行查詢模塊反射這里我們不再使用而是使用擴(kuò)展模塊的獲取所有的對(duì)象名獲取表對(duì)象進(jìn)行操作反射關(guān)聯(lián)關(guān)系可以反射并建立表之間的但是建立關(guān)聯(lián)列的命名為例如關(guān)于更多信息請(qǐng)?jiān)敿?xì)參看官方文檔 示例數(shù)據(jù)庫(kù)下載:http://chinookdatabase.codepl...在SQLALchemy中,我們使用反射技術(shù)來獲取相關(guān)database schema信息,如tables,views,in...

    NSFish 評(píng)論0 收藏0
  • Essential SQLAlchemy2th學(xué)習(xí)筆記ORM模塊

    摘要:你應(yīng)該使用工廠類來創(chuàng)建類,因?yàn)檫@確保了配置參數(shù)的正確性。對(duì)象包含創(chuàng)建數(shù)據(jù)庫(kù)連接所需的一切信息,它不會(huì)立即創(chuàng)建連接對(duì)象,而是會(huì)在我們進(jìn)行具體操作時(shí)創(chuàng)建。注意生產(chǎn)環(huán)境不要使用這個(gè)選項(xiàng)。關(guān)于選擇的最佳實(shí)踐使用迭代方式獲取所有值,而不是。 定義模式Defining Schema 定義ORM類的4個(gè)步驟: 繼承declarative_base()函數(shù)返回的類 定義__tablename__屬性...

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

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

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

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

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<