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

相关推荐
qq_34229582几秒前
HTML函数开发需要SSD吗_SSD对HTML函数开发效率影响【详解】
jvm·数据库·python
qq_432703664 分钟前
Golang怎么用embed嵌入SQL文件_Golang如何将SQL迁移文件嵌入Go程序统一管理【技巧】
jvm·数据库·python
m0_6403093010 分钟前
如何将 sticky 元素精确定位到父容器的右上角
jvm·数据库·python
带娃的IT创业者13 分钟前
深度解析 Claude Design:如何利用 Anthropic 最新设计范式构建 AI 原生应用
人工智能·python·llm·claude·应用开发·anthropic·ai原生应用
是梦终空16 分钟前
计算机毕业设计271—基于python+深度学习+YOLOV7的车牌识别系统(源代码+数据库+3万字论文)
python·深度学习·opencv·yolo·毕业设计·pyqt5·车牌识别系统
m0_3776182323 分钟前
c++如何将双精度浮点数以科学计数法写入文件_scientific标志【详解】
jvm·数据库·python
weixin_4249993625 分钟前
如何检测SQL注入风险_利用模糊测试技术发现漏洞
jvm·数据库·python
2301_7751481529 分钟前
如何用正则具名捕获组 (-) 提升复杂数据的提取效率
jvm·数据库·python
2501_9142459333 分钟前
Go语言如何在VSCode中开发_Go语言VSCode配置教程【避坑】.txt
jvm·数据库·python
2301_7826591836 分钟前
MongoDB如果有一个分片完全宕机集群还能用吗_受影响数据的不可读与分片隔离感知
jvm·数据库·python