国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

Essential SQLAlchemy2th學習筆記之Alembic數據庫遷移

cartoon / 2588人閱讀

摘要:默認的可以增量式創建數據庫缺失的表,但是無法做到修改已有的表結構,或刪除代碼中已經移除的表。這個時候我們就需要用到這個庫。

SQLAlchemy默認的create_all()可以增量式創建數據庫缺失的表,但是無法做到修改已有的表結構,或刪除代碼中已經移除的表。這個時候我們就需要用到Alembic這個SQLAlchemy migrations庫。
安裝:pip install alembic
官方文檔:http://alembic.zzzcomputing.c...

Creating the Migration Environment

創建一個目錄,然后在這個目錄下執行

alembic init migrations

這便創建了migrations目錄,該目錄結構如下:
├──
│ ├── 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

自動生成一個Base Empty Migration

alembic revision -m "Empty Init"

升級數據庫到最新版本

alembic upgrade head

自動生成新版本:

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

當然你也可以手動修改它。
一些常見的Alembic操作函數如下:

函數 說明
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都支持這些函數,比如SQLite不支持alter_column,drop_column

Controlling Alembic

查看現有數據庫的遷移版本:

alembic current

顯示歷史

alembic history

版本降級

alembic downgrade 34044511331

手動修改數據庫的遷移版本:

alembic stamp 2e6a6cc63e9

生成SQL

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

更多參考這里

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/38289.html

相關文章

  • Essential SQLAlchemy2th學習筆記自動生成代碼

    摘要:支持從現有數據庫自動生成代碼,并支持一對多,一對一,多對多的關聯關系。生成整個庫的代碼指定表保存到指定文件 pip install sqlacodegen sqlacodegen支持從現有數據庫自動生成ORM代碼,并支持一對多,一對一,多對多的關聯關系。 #生成整個庫的代碼 sqlacodegen sqlite:///Chinook_Sqlite.sqlite #指定表 sqlacod...

    Sleepy 評論0 收藏0
  • Essential SQLAlchemy2th學習筆記反射Reflection

    摘要:基于反射對象進行查詢模塊反射這里我們不再使用而是使用擴展模塊的獲取所有的對象名獲取表對象進行操作反射關聯關系可以反射并建立表之間的但是建立關聯列的命名為例如關于更多信息請詳細參看官方文檔 示例數據庫下載:http://chinookdatabase.codepl...在SQLALchemy中,我們使用反射技術來獲取相關database schema信息,如tables,views,in...

    NSFish 評論0 收藏0
  • Essential SQLAlchemy2th學習筆記ORM模塊

    摘要:你應該使用工廠類來創建類,因為這確保了配置參數的正確性。對象包含創建數據庫連接所需的一切信息,它不會立即創建連接對象,而是會在我們進行具體操作時創建。注意生產環境不要使用這個選項。關于選擇的最佳實踐使用迭代方式獲取所有值,而不是。 定義模式Defining Schema 定義ORM類的4個步驟: 繼承declarative_base()函數返回的類 定義__tablename__屬性...

    JasonZhang 評論0 收藏0
  • sqlalchemy學習筆記

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

    YPHP 評論0 收藏0

發表評論

0條評論

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