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

相关推荐
哇咔咔哇咔6 分钟前
【科普】conda、virtualenv, venv分别是什么?它们之间有什么区别?
python·conda·virtualenv
CSXB9928 分钟前
三十四、Python基础语法(文件操作-上)
开发语言·python·功能测试·测试工具
亚图跨际1 小时前
MATLAB和Python及R潜变量模型和降维
python·matlab·r语言·生物学·潜变量模型
IT古董1 小时前
【机器学习】决定系数(R²:Coefficient of Determination)
人工智能·python·机器学习
德育处主任Pro2 小时前
『Django』APIView基于类的用法
后端·python·django
Star Patrick2 小时前
算法训练(leetcode)二刷第十九天 | *39. 组合总和、*40. 组合总和 II、*131. 分割回文串
python·算法·leetcode
武子康3 小时前
大数据-213 数据挖掘 机器学习理论 - KMeans Python 实现 距离计算函数 质心函数 聚类函数
大数据·人工智能·python·机器学习·数据挖掘·scikit-learn·kmeans
写点什么啦3 小时前
使用R语言survminer获取生存分析高风险和低风险的最佳截断值cut-off
开发语言·python·r语言·生存分析·x-tile
武子康3 小时前
大数据-214 数据挖掘 机器学习理论 - KMeans Python 实现 算法验证 sklearn n_clusters labels
大数据·人工智能·python·深度学习·算法·机器学习·数据挖掘
封步宇AIGC4 小时前
量化交易系统开发-实时行情自动化交易-Okex K线数据
人工智能·python·机器学习·数据挖掘