帮你搭建一个测试平台(1)--alembic上手

增晒改查的基础是什么?是有数据存储。所以我们这一篇与下一篇将引入数据库迁移工具alembic和数据库引擎工具sqlalchemy

alembic介绍

alembic 是一个用于数据库迁移的工具,它允许开发人员在应用程序的开发周期中对数据库进行版本控制和演化。它通常与 SQLAlchemy ORM(对象关系映射)库一起使用,但也可以与其他 SQL 工具配合使用。

以下是 alembic 的一些主要特点和功能:

  1. 数据库迁移管理: Alembic 允许您创建和管理数据库迁移脚本,这些脚本描述了如何从一个数据库版本迁移到下一个版本。这使得在开发周期中进行数据库模式的演化变得更加容易和可控。
  2. 版本控制: Alembic 为数据库模式的每个版本维护一个版本控制记录,使得开发团队能够协同工作并跟踪数据库模式的变化。
  3. 自动化生成迁移脚本: 使用 Alembic,您可以通过命令自动生成迁移脚本,而无需手动编写 SQL。
  4. 灵活性: Alembic 允许您使用纯 SQL 或者 Python 代码来描述数据库迁移操作,这使得它非常灵活并适用于各种数据库系统。
  5. 与 SQLAlchemy 集成: Alembic 与 SQLAlchemy ORM 的集成非常紧密,使得在应用程序中同时使用这两个工具变得更加容易。

总的来说,Alembic 提供了一种简单而可靠的方式来管理数据库模式的变化,使得开发团队能够在应用程序开发周期中轻松地进行数据库迁移和演化。

数据准备

1.先在本地数据库新建一个架构study,后续所有的增删改查都在这个数据库里操作

2.然后我们在models目录下新建一个Base.py:

ini 复制代码
from sqlalchemy.ext.declarative import declarative_base


BaseM = declarative_base()

使用教程

下载安装(因为我们已经有了所以不需要)

复制代码
pip install alembic

初始化alembic

csharp 复制代码
alembic init alembic  # 在项目中生一个alembic的插件环境
# 查看alembic结构
├── alembic # 二级目录
│   ├── README # readme
│   ├── env.py # 环境配置
│   ├── script.py.mako
│   └── versions # 版本
├── alembic.ini # 配置文件
......

在开发过程中我们主要会修改的文件是env.py和alembic.ini

perl 复制代码
# alembic.ini
# 在alembic.ini中我们主要修改sqlalchemy.url这个配置,目的就是让alembic知道我们使用的sql数据库具体信息,这个写法和sqlalchemy一样
sqlalchemy.url = mysql+pymysql://root:root@127.0.0.1:3306/study

然后我们在alembic目录里的env.py找到target_metadata = None 这一行,用下面的代码替换:

python 复制代码
import sys
from os.path import abspath, dirname
sys.path.append(dirname(dirname(abspath(__file__))))
# 注意这个地方是要引入模型里面的Base,不是connect里面的
from models.Base import BaseM
target_metadata = BaseM.metadata

生成迁移文件

我们在终端输入 alembic revision --autogenerate -m "注释"

scss 复制代码
(.venv) PS E:\PythonCode\testp_backend> alembic revision --autogenerate -m "description of the migration"

只用修改"description of the migration"里的内容就行了,就是作为迁移文件的解释

然后你的alembic/versions目录下就会多一个迁移文件

执行迁移

在终端输入 alembic upgrade head ,用于将数据库迁移到最新的版本。

bash 复制代码
(.venv) PS E:\PythonCode\pythonProject1> alembic upgrade head  

然后你的数据库里应该会多一个alembic_version的表,里面记录的是你上一次迁移文件的num

后期主要使用的也是 alembic revision --autogenerate -m "注释" 和 alembic upgrade head命令 感谢观看,下一篇将会讲一讲如果创建一个user表以及相关操作

相关推荐
pride.li19 分钟前
第12章 Python 教程-流程控制:循环结构
linux·服务器·python·算法
鬼手点金37 分钟前
模型即 Agent:当模型本身成为产品
开发语言·前端·人工智能·python·机器学习
田里的水稻43 分钟前
PyTorch-Dataset\DataLoader数据加载
人工智能·pytorch·python
卷无止境1 小时前
Python 3.14 自由线程:拆掉 GIL 之后,我们到底得到了什么
后端·python
染指11101 小时前
147.Agent-LangGraph归并函数
开发语言·人工智能·python·langchain·agents
小白学大数据1 小时前
逆向分析短视频平台 a_bogus 参数:从 JavaScript 混淆到 Python 复现
javascript·python·音视频
外收内放1 小时前
数据分析(数据清洗)
python·学习·数据分析
小小张说故事2 小时前
Python 的 True + True 为什么等于 2?bool 是 int 子类,这个设计坑了多少人
python
神仙别闹2 小时前
基于Python实现自动化测试作业—图像增广方案
图像处理·python·计算机视觉
坊钰2 小时前
【LangGraph框架入门级】12. 人机交互:interrupt 中断与 Command 恢复
开发语言·数据库·python·人机交互·ai编程·langgraph