Brc's blog
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于

Brc

努力中
首页
前端
后端
运维
  • 工作笔记
  • 分类
  • 标签
  • 归档
关于
  • python

  • fastapi

    • fastapi
    • fastapi_alembic
      • 安装
      • 操作步骤
        • 1.初始化 alembic 仓库
        • 2.创建模型
        • 3.修改配置文件
        • 4.自动生成迁移文件
        • 5.更新数据库
        • 6.修改表结构
        • 7.命令和参数解释
        • 经典错误 :
  • 其他

  • 后端
  • fastapi
Brc
2021-05-28
目录

fastapi_alembic

提示

说明:fastapi_alembic简单使用。

# 安装

pip install alembic
1

# 操作步骤

# 1.初始化 alembic 仓库

在终端中, cd 到你的项目目录中,然后执行命令

alembic init alembic
1

创建一个名叫 alembic 的仓库。

# 2.创建模型

class User(Base):
     __tablename__ = 'user'
     id = Column(Integer,primary_key=True)
     username = Column(String(20),nullable=False)
     password = Column(String(100),nullable=False)

class Article(Base):
     __tablename__ = 'article'
     id = Column(Integer,primary_key=True)
     title = Column(String(100),nullable=False)
     content = Column(Text, nullable=False)
1
2
3
4
5
6
7
8
9
10
11

# 3.修改配置文件

在 alembic.ini 中设置数据库的连接, sqlalchemy.url =driver://user:pass@localhost/dbname ,比如以 mysql 数据库为例,则配置后的代码为:

sqlalchemy.url = mysql+pymysql://root:root@localhost/firstsqlalchemy?charset=utf8
1

在alembic/env.py中修改 target_metadata = your_models.Base.metadata 设置创建模型的元类

当我们导入一个模块时:import xxx,默认情况下python解析器会搜索当前目录、已安装的内置模块和第三方模块,搜索路径存放在sys模块的path

import os,sys
#sys.path.append(os.getcwd())
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
import your_models
1
2
3
4

# 4.自动生成迁移文件

#将当前模型中的状态生成迁移文件
alembic revision --autogenerate -m "message"
1
2

# 5.更新数据库

将刚刚生成的迁移文件,真正映射到数据库中

alembic upgrade head
1

要降级,使用

alembic downgrade head
1

# 6.修改表结构

修改表结构,重复4~5操作

# 7.命令和参数解释

init:创建一个 alembic 仓库。
revision:创建一个新的版本文件。
--autogenerate:自动将当前模型的修改,生成迁移脚本。
-m:本次迁移做了哪些修改,用户可以指定这个参数,方便回顾。
upgrade:将指定版本的迁移文件映射到数据库中,会执行版本文件中的 upgrade 函数。如果有多个迁移脚本没有被映射到数据库中,那么会执行多个迁移脚本。
[head]:代表最新的迁移脚本的版本号。
downgrade:会执行指定版本的迁移文件中的 downgrade 函数。
heads:展示head指向的脚本文件版本号。
history:列出所有的迁移版本及其信息。
current:展示当前数据库中的版本号。另外,在你第一次执行 upgrade 的时候,就会在数据库中创建一个名叫 alembic_version 表,这个表只会有一条数据,记录当前数据库映射的是哪个版本的迁移文件。
1
2
3
4
5
6
7
8
9
10

# 经典错误 :

错误描述 原因 解决办法
FAILED: Targetdatabase is not up todate 主要是 heads 和 current 不相同。 current 落后heads 的版本。 将current移动到head上。alembic upgrade head
FAILED: Can’t locaterevision identified by’xxx’ 数据库中存的版本号不在迁移脚本文件中 删除据库的 alembic_version 表中的数据,重新执行 alembic upgrade head
#fastapi#alembic
Last Updated: 2021/07/05, 11:58:50
fastapi
flask

← fastapi flask→

最近更新
01
谷歌云创建GKE集群
07-26
02
ElastiCacheForRedis启用密码
07-26
03
upload-to-gcs
06-29
更多文章>
Theme by Vdoing | Copyright © 2021-2024 Brc | MIT License | 浙ICP备19031881号-4
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式