Python使用alembic實現數據庫管理

python使用alembic實現數據庫管理

環境準備

  1. 安裝依賴:
pip install sqlalchemy alembic
  1. 項目結構
    my_project/
    ├── models.py # 定義數據模型
    └── alembic/ # 遷移腳本目錄(自動生成)

使用步驟:

1. 初始化Alembic環境

在終端切換到項目目錄下,運行以下命令初始化

alembic init alembic

運行后的文件結構:
alembic/
├── versions/ # 存放遷移腳本
├── env.py # 遷移環境配置
└── script.py.mako # 遷移腳本模板
alembic.ini # 主配置文件
models.py

2. 配置數據庫連接

修改alembic.ini文件,設置數據庫連接,找到sqlalchemy.url進行配置:

# 模板:
sqlalchemy.url = mysql+驅動名稱://用戶名:密碼@主機地址:端口/數據庫名?charset=utf8mb4  # 使用mysql示例

3. 定義數據模型

在models.py中編寫sqlalchemy模型:

from sqlalchemy import Column, Integer, String
from sqlalchemy.ext.declarative import declarative_baseBase = declarative_base()class User(Base):__tablename__ = "users"id = Column(Integer, primary_key=True)name = Column(String(50))email = Column(String(100))

4.修改alembic/env.py 引入模型

找到alembic/env.py文件,引入models.py文件,具體修改如下:
修改前:

target_metadata = None

修改后:

from models import Base  # 從你的模型文件導入 Base
target_metadata = Base.metadata

5. 生成遷移腳本

  1. 生成遷移腳本
# 首次使用
alembic revision -m "create users table"
# 非首次使用
alembic revision --autogenerate -m "create users table"

6. 數據庫遷移

運行遷移更新數據庫:

alembic upgrade head

7. 回滾遷移

回滾到上一個版本:

alembic downgrade -1

指定版本號回滾:

alembic downgrade <version_id>

8.常見命令匯總:

命令作用
alembic init alembic初始化遷移環境
alembic revision --autogenerate -m "msg"生成自動遷移腳本
alembic downgrade -1回滾到上一個版本
alembic upgrade head應用最新遷移
alembic history查看遷移歷史

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/71855.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/71855.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/71855.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

對WebSocket做一點簡單的理解

1.概念 WebSocket 是基于 TCP 的一種新的網絡協議。它實現了瀏覽器與服務器全雙工通信——瀏覽器和服務器只需要完成一次握手&#xff0c;兩者之間就可以創建持久性的連接&#xff0c; 并進行雙向數據傳輸。 HTTP協議和WebSocket協議對比&#xff1a; HTTP是短連接 WebSocke…

kali虛擬機登錄頁面發癲 大寫鎖定輸入不了密碼

不知道怎么了 總是發癲 重啟切換太麻煩了 還有時候不成功 kali其實可以開啟虛擬鍵盤 如下 就解決的 發癲kali 發癲 發癲

基于Python的商品銷量的數據分析及推薦系統

一、研究背景及意義 1.1 研究背景 隨著電子商務的快速發展&#xff0c;商品銷售數據呈現爆炸式增長。這些數據中蘊含著消費者行為、市場趨勢、商品關聯等有價值的信息。然而&#xff0c;傳統的數據分析方法難以處理海量、多源的銷售數據&#xff0c;無法滿足現代電商的需求。…

內存泄漏出現的時機和原因,如何避免?

由于時間比較緊張我就不排版了&#xff0c;但是對于每一種可能的情況都會出對應的代碼示例以及解決方案代碼示例。 內存泄漏可能的原因之一在于用戶在動態分配一個內存空間之中&#xff0c;忘記將這部分內容手動釋放。例如&#xff1a;&#xff08;c之中使用new分配內存沒有使…

PDF處理控件Aspose.PDF,如何實現企業級PDF處理

PDF處理為何成為開發者的“隱形雷區”&#xff1f; “手動調整200頁PDF目錄耗時3天&#xff0c;掃描件文字識別錯誤導致數據混亂&#xff0c;跨平臺渲染格式崩壞引發客戶投訴……” 作為開發者&#xff0c;你是否也在為PDF處理的復雜細節消耗大量精力&#xff1f;Aspose.PDF憑…

工程化與框架系列(27)--前端音視頻處理

前端音視頻處理 &#x1f3a5; 引言 前端音視頻處理是現代Web應用中的重要組成部分&#xff0c;涉及音頻播放、視頻處理、流媒體傳輸等多個方面。本文將深入探討前端音視頻處理的關鍵技術和最佳實踐&#xff0c;幫助開發者構建高質量的多媒體應用。 音視頻技術概述 前端音視…

2008-2024年中國手機基站數據/中國移動通信基站數據

2008-2024年中國手機基站數據/中國移動通信基站數據 1、時間&#xff1a;2008-2024年 2、來源&#xff1a;OpenCelliD 3、指標&#xff1a;網絡類型、網絡代數、移動國家/地區、移動網絡代碼、區域代碼、小區標識、單元標識、坐標經度、坐標緯度、覆蓋范圍、測量樣本數、坐標…

阿里云 ESA 游戲行業解決方案|安全防護、加速、低延時的技術融合

如今&#xff0c;游戲行業正處于蓬勃發展與深刻變革的關鍵時期。根據中國國際數字娛樂產業大會&#xff08;CDEC&#xff09;發布的《2024年 1-6 月中國游戲產業報告》顯示 2024 年上半年國內游戲市場實際銷售收入達 1472.67 億元&#xff0c;同比增長 2.08%&#xff0c;游戲用…

C# Unity 唐老獅 No.7 模擬面試題

本文章不作任何商業用途 僅作學習與交流 安利唐老獅與其他老師合作的網站,內有大量免費資源和優質付費資源,我入門就是看唐老師的課程 打好堅實的基礎非常非常重要: 全部 - 游習堂 - 唐老獅創立的游戲開發在線學習平臺 - Powered By EduSoho 如果你發現了文章內特殊的字體格式,…

electron + vue3 + vite 主進程到渲染進程的單向通信

用示例講解下主進程到渲染進程的單向通信 初始版本項目結構可參考項目&#xff1a;https://github.com/ylpxzx/electron-forge-project/tree/init_project 主進程到渲染進程&#xff08;單向&#xff09; 以Electron官方文檔給出的”主進程主動觸發動作&#xff0c;發送內容給渲…

【雜談】-因果性:開啟機器學習新紀元?

文章目錄 因果性&#xff1a;開啟機器學習新紀元&#xff1f;一、機器學習的現狀與局限二、因果性的定義與意義&#xff08;一&#xff09;日常生活中的因果性案例&#xff08;二&#xff09;相關性與因果性的區別 三、現有機器學習模型的困境與因果性的價值&#xff08;一&…

【Python】omegaconf 用法詳解

OmegaConf&#xff1a;從基礎到進階 1. OmegaConf 簡介 OmegaConf 是 hydra 背后的核心配置庫&#xff0c;提供比 argparse 和 json.load 更靈活的配置管理能力。其主要特性包括&#xff1a; 安裝 OmegaConf&#xff1a; pip install omegaconf2. 基本操作 2.1 創建 OmegaC…

如何在 Windows 10 啟用卓越性能模式及不同電源計劃對比

在使用 powercfg -duplicatescheme 命令啟用 “卓越性能模式”&#xff08;即 Ultimate Performance 模式&#xff09;之前&#xff0c;有幾個前提條件需要注意&#xff1a; 前提條件&#xff1a; 系統版本要求&#xff1a;卓越性能模式 僅在 Windows 10 專業版 或更高版本&a…

請談談 HTTP 中的安全策略,如何防范常見的Web攻擊(如XSS、CSRF)?

一、Web安全核心防御機制 &#xff08;一&#xff09;XSS攻擊防御&#xff08;跨站腳本攻擊&#xff09; 1. 原理與分類 ?存儲型XSS&#xff1a;惡意腳本被持久化存儲在服務端&#xff08;如數據庫&#xff09;?反射型XSS&#xff1a;腳本通過URL參數或表單提交觸發執行?…

三、0-1搭建springboot+vue3前后端分離-idea新建springboot項目

一、ideal新建項目1 ideal新建項目2 至此父項目就創建好了&#xff0c;下面創建多模塊&#xff1a; 填好之后點擊create 不刪了&#xff0c;直接改包名&#xff0c;看自己喜歡 修改包名和啟動類名&#xff1a; 打開ServiceApplication啟動類&#xff0c;修改如下&#xff1a; …

從0到1入門RabbitMQ

一、同步調用 優勢&#xff1a;時效性強&#xff0c;等待到結果后才返回 缺點&#xff1a; 拓展性差性能下降級聯失敗問題 二、異步調用 優勢&#xff1a; 耦合度低&#xff0c;拓展性強異步調用&#xff0c;無需等待&#xff0c;性能好故障隔離&#xff0c;下游服務故障不影響…

二維碼識別OCR接口:開啟高效信息提取的新篇章

前言 在數字化時代&#xff0c;二維碼作為一種高效的信息傳遞工具&#xff0c;已經廣泛應用于各個領域。而二維碼識別OCR接口的出現&#xff0c;更是為企業和開發者提供了一種快速、準確地提取信息的解決方案。 技術原理&#xff1a;圖像識別與數據解析的完美結合 二維碼識別…

ThinkPHP框架

在電腦C磁盤中安裝composer 命令 在電腦的D盤中創建cd文件夾 切換磁盤 創建tp框架 創建一個aa的網站&#xff0c;更換路徑到上一步下載的tp框架路徑 在管理中修改路徑 下載壓縮包public和view 將前面代碼中的public和view文件替換 在PHPStom 中打開文件 運行指定路徑 修改demo…

Matlab:矩陣運算篇——矩陣數學運算

目錄 1.矩陣的加法運算 實例——驗證加法法則 實例——矩陣求和 實例——矩陣求差 2.矩陣的乘法運算 1.數乘運算 2.乘運算 3.點乘運算 實例——矩陣乘法運算 3.矩陣的除法運算 1.左除運算 實例——驗證矩陣的除法 2.右除運算 實例——矩陣的除法 ヾ(&#xffe3;…

快速從C過度C++(一):namespace,C++的輸入和輸出,缺省參數,函數重載

&#x1f4dd;前言&#xff1a; 本文章適合有一定C語言編程基礎的讀者瀏覽&#xff0c;主要介紹從C語言到C過度&#xff0c;我們首先要掌握的一些基礎知識&#xff0c;以便于我們快速進入C的學習&#xff0c;為后面的學習打下基礎。 這篇文章的主要內容有&#xff1a; 1&#x…