【alembic】-fastapi必備之數據庫遷移


sqlalchemy-alembic

問題:在學習fastapi的過程中想通過sqlalchemy來連接數據庫,對model層進行操作,並且進行類似於django的migrate的操作,但是發現fastapi並沒有自帶的方便的數據庫遷移插件,所以從sqlalchemy入手,找到了alembic,親測有效

1.什么是alembic

Alembic 使用 SQLAlchemy 作為底層引擎,為關系數據庫提供變更管理腳本的創建、管理和調用。本教程將全面介紹該工具的理論和用法。

首先,確保按照安裝中的說明安裝Alembic 。如鏈接文檔中所述,通常最好將 Alembic 安裝在與目標項目相同的模塊/Python 路徑中,通常使用Python 虛擬環境,以便在alembic 運行命令時,調用的 Python 腳本by alembic,即您的項目env.py腳本,將可以訪問您的應用程序模型。這並非在所有情況下都嚴格必要,但在絕大多數情況下通常是首選。

下面的教程假設alembic命令行實用程序存在於本地路徑中,並且在調用時將可以訪問與目標項目相同的 Python 模塊環境。

官網鏈接:https://alembic.sqlalchemy.org/en/latest/tutorial.html#

2.如何使用?

2.1 下載安裝

pip install alembic

2.2 使用

cd /path/to/yourproject # 進入自己項目的跟目錄
source /path/to/yourproject/.venv/bin/activate   # 激活虛擬環境
alembic init alembic 	# 在項目中生一個alembic的插件環境
# 查看alembic結構
├── alembic	# 二級目錄
│   ├── README	# readme
│   ├── env.py	# 環境配置
│   ├── script.py.mako
│   └── versions	# 版本
├── alembic.ini	# 配置文件
......
  • 具體的配置我們在此部過多贅述,詳細參見文檔:https://alembic.sqlalchemy.org/en/latest/tutorial.html#

  • 在開發過程中我們主要會修改的文件是env.pyalembic.ini

    # alembic.ini
    # 在alembic.ini中我們主要修改sqlalchemy.url這個配置,目的就是讓alembic知道我們使用的sql數據庫具體信息,這個寫法和sqlalchemy一樣
    sqlalchemy.url = mysql+pymysql://root:root@127.0.0.1:3306/mydb001
    
    # env.py
    # 在默認的env.py配置文件中target_metadata是為None的,這個配置的作用是指定我們的model 它可以指定一個,也可以通過數組指定多個,建議使用多個
    # target_metadata = None	# 默認配置
    from api.orders.model import Base as orders_base
    from api.users.model import Base as users_base
    target_metadata = [orders_base.metadata, users_base.metadata]
    
  • 到此,配置就修改成功了,可以進行遷移

    # 遷移表
    alembic revision -m "create account table"
    # 修改表結構
    alembic revision --autogenerate -m "change pwd"
    # --autogenerate參數可以對字段做增刪改
    # -m 添加注釋
    # 通過該命令可以將模型遷移到數據庫
    alembic upgrade head	
    

3.demo

  • model示例:

image-20210629180918844

image-20210629181008232

  • 遷移后的數據庫示例:
image-20210629183820603


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM