帮你搭建一个测试平台(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.pyalembic.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表以及相关操作

相关推荐
以泪为证7 分钟前
WebSocket 任务分发系统代码深度分析与应用
python
jumin180617 分钟前
python采用jdbc连接kerberos认证的hive
python·apache hive
Ice__Cai1 小时前
Flask 路由详解:构建灵活的 URL 映射系统
开发语言·python·flask
l1t1 小时前
DeepSeek辅助编写的将xlsx格式文件中sheet1.xml按需分别保留或去掉标签的程序
xml·python·excel·wps·xlsx
l1t1 小时前
分析xml标签属性和压缩级别对xlsx文件读取解析的影响
xml·开发语言·python·sql·duckdb
Chandler_Song2 小时前
【Python代码】谷歌专利CSV处理函数
开发语言·python·pandas
测试19986 小时前
Web自动化测试:测试用例流程设计
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
山烛10 小时前
矿物分类系统开发笔记(一):数据预处理
人工智能·python·机器学习·矿物分类
集成显卡17 小时前
使用 Google 开源 AI 工具 LangExtract 进行结构化信息抽取
python·google·openai
久笙&17 小时前
对象存储解决方案:MinIO 的架构与代码实战
数据库·python·架构