alembic教程

2023-05-16

安装
pip install alembic
步骤

1.初始化 alembic 仓库

在终端中, cd 到你的项目目录中,然后执行命令 alembic init
alembic ,创建一个名叫 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)

3.修改配置文件

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

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

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

import os,sys
sys.path.append(os.path.dirname(os.path.dirname(__file__)))
import your_models

其次,修改 target_metadata = your_models.Base.metadata 设置创建模型的元类

4.自动生成迁移文件

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

5.更新数据库

使用 alembic upgrade head 将刚刚生成的迁移文件,真正映射到数据库中。同理,如果要降级,那么使用 alembic downgrade head 。

5.修改代码

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

6.命令和参数解释

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

经典错误 :

错误描述原因解决办法
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

alembic教程 的相关文章

随机推荐

  • 主机可以ping通虚拟机但无法访问虚拟机某一端口

    问题描述 主机可以ping通虚拟机 xff0c 但是服务器启动状态下访问 192 168 200 152 8888失败 背景 UFW防火墙已经开放 8888 端口 原因和解法 firewall这个防火墙的8888端口没有开放 xff0c 使
  • WSL安装ubuntu18.04+2016VCS+Verdi——记录安装过程错误

    前言 xff1a 安装过程花了一个星期 xff0c 最开始是wsl的图形化界面一直没搞出来 xff0c 等图形化界面安装好之后 xff0c 安装vcs和verdi的过程又是一波三折 xff08 这段可不看 xff0c 总结一下自己踩过的坑
  • 【stm32】ST-LINK Connection error解决方法之一

    ST LINK报错原因之一 xff1a 固件丢失 好久没有用开发板和stlink xff0c 今天发现下载报错 xff0c 明明电脑已经装了stlink驱动 猜测可能是stlink固件丢失 span class token number 1
  • 云服务器VNC安装教程

    文章目录 1 VNC Viewer 注册及安装2 云服务器安装配置2 1 ssh安装和配置2 2 Tightvncserver 安装2 2 安装 gnome 桌面2 3 远程连接端口开启2 4 Xstartup文件编辑2 5 云服务器端口配
  • 浅谈STP协议

    1 STP协议解决什么问题 xff1f 解决网络拓扑中冗余链路产生的环路问题 2 STP协议有什么优缺点 xff1f 解决树形接口的可靠性问题 xff0c 有主备线路 xff0c 当主链路出现故障后 xff0c 可以感知网络的变化 xff0
  • Linux下CMake学习笔记和在QT的应用

    一 cmake的介绍 CMak可以让我们通过编写简单的配置文件去生成本地的Makefile xff0c 这个配置文件是独立于运行平台和编译器的 xff0c 这样就不用亲自去编写Makefile了 xff0c 而且配置文件可以直接拿到其它平台
  • WinIO:一个底层的键盘事件模拟工具

    当我们需要程序模拟键盘事件时 xff0c 通常会这样写 xff1a C xff1a keybd event JAVA xff1a robot keyPress 但是在某些情况下 xff0c 这么写并不能实现需求 xff0c 例如用程序在密码
  • gcc: error: unrecognized command line option ‘-std=c++14’ 问题解决

    问题描述 xff1a 安装一些python包 实际场景为py3安装infomap 时报错 xff1a gcc error unrecognized command line option std 61 c 43 43 14 环境 cento
  • 无监督预训练 & 有监督预训练

    本文参考了几篇其他博客 xff0c 具体链接在对应部分有提供 无监督预训练 xff08 unsupervised pre training xff09 无监督预训练策略 xff0c 主要应用于 复杂任务 43 少量标记数据集 xff0c 即
  • VSCode 是什么

    VSCode 是什么 xff0c VS Code的全称是Visual Studio Code xff0c 但这全名实在是太长了 xff0c 很多用户喜欢叫它VS Code 说起VS Code xff0c 官方定义它是一个免费的 开源的跨平台
  • SDN控制器之OVN实验二:使用OVN配置路由器

    概览 基于我上一篇文章中的实验环境 xff0c 我现在将第三层网络基础功能添加到OVN中 最终呈现出来的将是由逻辑路由器连接的一对逻辑交换机 另外 xff0c 路由器将被配置为通过OVN中内置的DHCP服务来提供IP地址 重构逻辑组件 由于
  • 树莓派自带VNC黑屏(灰屏)个人解决办法

    最近购买了树莓派 xff14 xff22 看来许多教程 xff0c 但VNC第一次还正常显示 xff0c 后来就黑屏 xff0c 还有什么现在不能显示桌面什么的 xff0c 下面给大家说下vnc黑屏我的解决办法 xff0c 我发现是vncv
  • Neutron基础知识学习1

    Neutron OpenStack通过Neutron项目在物理网络环境之上提供满足多租户要求的虚拟网络和服务 Neutron提供的网络虚拟化能力包括 xff1a xff08 1 xff09 二层到七层网络的虚拟化 xff1a L2 xff0
  • 使用百度echarts制作可视化大屏——最终效果和动态数据刷新

    最终效果如下图 xff1a 接下来就是数据动态刷新了 xff0c 这个没什么好说的 xff0c 就是一个 post的事 xff0c 传递一个json给自定义的refresh函数就行了 post url null function d ref
  • 简单记录ESP8266WIFI模块网络调试过程,测试通过。

    本文目的 xff0c 使用WIFI模块连接阿里云飞燕平台 xff0c 调试之前我想先测试一下买回来的WIFI模块是否能正常使用 xff0c 可以通过网络调试助手进行测试 以手机WIFI提供局域网环境 xff0c PC端和WIFI模块连接手机
  • 在vue-element-ui的时候 如果同时使用了animated会出现模态框层级显示错误问题

    同时使用element ui 和animated的时候 模态框的层级会出问题 这个时候需要做动画 最好还是用vue原带的动画组件transition和transition group xff0c 然后自定义动画
  • tensorflow数据清洗

    import tensorflow as tf import numpy as np import random import os import math from matplotlib import pyplot as plt def
  • 利用PHPExcel导出数据,下载excel文件正常,打开报错:'break' not in the 'loop' or 'switch' context

    今天有一个需求 xff0c 是利用phpexcel类导出数组为excel文件并下载 xff0c 我本地用的是phpstudy环境 xff1a php版本7 1 13 下载文件正常 xff0c 但是导出的excel文件里面是报错信息 如下 于
  • 如何利用python开启简单http server服务

    一 背景 有时候搭建一个简易的http服务器可以大大提高工作效率 xff0c 比如局域网内共享文件 xff0c http测速等 下文将介绍一种使用python开启简单http server服务的方法 二 构建步骤 1 将python添加到环
  • alembic教程

    安装 pip install alembic 步骤 1 初始化 alembic 仓库 在终端中 xff0c cd 到你的项目目录中 xff0c 然后执行命令 alembic init alembic xff0c 创建一个名叫 alembic