当前位置: 首页 > news >正文

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_base

Base = 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.dtcms.com/a/59997.html

相关文章:

  • docker 常用命令教程
  • LeetCode --- 439周赛
  • 【.NET】WinForms 和 WPF 在性能方面的对比
  • 5、STL中priority_queue的使用方法
  • Unity UGUI下实现精确点击的一种方式
  • 【GIT】non-fast-forward错误
  • python面试常见题目
  • 【RAG】基于向量检索的 RAG (BGE示例)
  • Leetcode 刷题记录 05 —— 普通数组
  • 硬件学习笔记--48 磁保持继电器相关基础知识介绍
  • 【每日学点HarmonyOS Next知识】 状态变量、公共Page、可见区域变化回调、接收参数、拖拽排序控件
  • 前端数据模拟 Mock.js 学习笔记(附带详细)
  • 中小学信息学特长生试卷(C++)
  • 6.聊天室环境安装 - Ubuntu22.04 - elasticsearch(es)的安装和使用
  • clickhouse执行进度
  • How to install nacos 2.5 with podman
  • 汇编的伪指令
  • Vue3 模板引用:打破数据驱动的次元壁(附高阶玩法)
  • openwrt路由系统------lua、uci的关系
  • SAP HANA Merge
  • 【C++设计模式】第十六篇:迭代器模式(Iterator)
  • mysql进阶(五)
  • Windows控制台函数:控制台读取输入函数ReadConsoleA()
  • STM32中输入/输出有无默认电平
  • C++的内存管理
  • 单片机项目复刻需要的准备工作
  • SpringBoot参数校验:@Valid 与 @Validated 详解
  • nginx反向代理功能
  • LeetCode1871 跳跃游戏VII
  • 江协科技/江科大-51单片机入门教程——P[5-1] 模块化编程 P[5-2] LCD1602调试工具