likes
comments
collection
share

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

作者站长头像
站长
· 阅读数 3

增晒改查的基础是什么?是有数据存储。所以我们这一篇与下一篇将引入数据库迁移工具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,后续所有的增删改查都在这个数据库里操作

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

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

from sqlalchemy.ext.declarative import declarative_base


BaseM = declarative_base()

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

使用教程

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

pip install alembic

初始化alembic

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

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

# 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 这一行,用下面的代码替换:

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

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

生成迁移文件

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

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

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

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

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

执行迁移

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

(.venv) PS E:\PythonCode\pythonProject1> alembic upgrade head  

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

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