alembic 如何使用?

2023-05-16

在之前的数据库操作中,我们新增一个字段是不是每次都得删除数据库表,然后再重新将新创建的数据库表映射到数据库中。这样操作是不是很蛋疼?是吧?于是sqlalchemy作者拜尔为了解决这一问题,开发了alembic这一迁移工具。

alembic 作用:

方便数据库与ORM模型的迁移与映射。

alembic 安装:

pip install alembic

alembic 用法:

1、第一步

先创建好ORM模型(alembic跟sqlalchemy一样,独立于flask而存在的!所以,我们创建一个纯python文件即可),代码如下:

from sqlalchemy import create_engine,Column,String,Integer
from sqlalchemy.ext.declarative import declarative_base

DIALCT = "mysql"
DRIVER = "pymysql"
USERNAME = "root"
PASSWORD = "admin"
HOST = "127.0.0.1"
PORT = "3306"
DATABASE = "alembic_demo"

DB_URI = "{}+{}://{}:{}@{}:{}/{}?charset=utf8".format(DIALCT,DRIVER,USERNAME,PASSWORD,HOST,PORT,DATABASE)
engine = create_engine(DB_URI)
Base = declarative_base(engine)

class User(Base):
    __tablename__ = "user"
    id = Column(Integer , primary_key=True , autoincrement=True)
    name = Column(String(50) , nullable=False)

Base.metadata.drop_all()
Base.metadata.create_all()

2、第二步

打开CMD窗口,进入到我们当前项目虚拟环境中,截图如下:

3、第三步

创建一个alembic仓库,输入以下命令:

alembic init alembic

:第一个alembic是alembic语法,类似git。第二个init代表初始化,第三个alembic代表仓库名,你也可以命名其它名字,这里为了方便理解,所以采用了alembic这一名字

完成上述命令后,然后进入pycharm编辑器中,我们就可以看到我们的项目下多了一个alembic文件和alembic.ini文件

4、第四步

找到alembic.ini配置文件,修改sqlalchemy.url,代码如下:

sqlalchemy.url = mysql+pymysql://root:admin@localhost/alembic_demo

:和数据库连接信息一样

5、第五步

找到env.py文件,修改target_metadata参数

代码如下:

import os
import sys
import alembic_demo

# 把当前项目路径加入到path中
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

target_metadata = alembic_demo.Base.metadata

6、第六步:

创建数据库迁移文件,命令如下:

alembic revision --autogenerate -m "first commit"

运行该命令,出现下方信息说明迁移文件创建成功

创建成功会在version目录下创建一个迁移文件,截图如下(前面377...ad这段代表迁移版本号,后面first_commit代表迁移信息):

:alembic映射到数据库流程如下

ORM模型 ——迁移文件——映射到数据库中

7、第七步:

将迁移文件映射到数据库中,命令如下:

alembic upgrade head

运行上述命令,如果出现下方信息,说明成功映射到表中

不信,我们再查查查看下数据库表,结果如下:

OK,数据库表已成功映射到数据库中。

步骤很多,但只要你多敲几遍,你就会熟悉掌握alembic的用法。当然,如果你实在记不住,再看看我的这篇博文。

 

 

 

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

alembic 如何使用? 的相关文章

  • C++STL在算法题中的应用-持续更新

    写洛谷的题 有时候不会总是会去看题解 有的思路很巧妙 需要学习 有的用了很厉害的STL 之前一直在看 现在想想也是要记下来好一点 这个帖子持续更新吧 再见到好用的STL就在这里记下来 1 vector 是个容器很好用 但是我基本没怎么用过
  • 卡尔曼滤波(联邦、一致性卡尔曼滤波)

    在信息融合中经常使用卡尔曼滤波 xff0c 现在我们对其进行讲解 xff1a 百度百科上写到 xff1a 卡尔曼滤波公式如上 这是另一种表述 xff0c 涉及的符号见下表 xff1a 对于联邦卡尔曼滤波 xff1a 对于一致性卡尔曼滤波 x
  • BP神经网络公式推导(西瓜书)自我理解

    公式推导 描述BP神经网络 xff1a 网络包含三层 xff1a 输入层 xff1a 神经元数量为 d d d 个 xff0c 输入为 x i
  • C++ 友元类

    1 在C 43 43 中 xff0c 我们使用类对数据进行了隐藏和封装 xff0c 类的数据成员一般都定义为私有成员 xff0c 成员函数一般都定义为公有的 xff0c 以此提供类与外界的通讯接口 但是 xff0c 有时需要定义一些函数 x
  • 浪潮服务器通过BMC安装银河麒麟OS记录

    浪潮服务器 xff08 X86 xff09 远程安装银河kylin操作系统记录 1 下载麒麟镜像OS 官网下载 xff1a 银河麒麟官网 xff0c 按需申请即可这个是首页 xff0c 不要走错哦 2 通过网络登录BMC 浪潮服务器的默BM
  • K8S 性能优化 - 大型集群 CIDR 配置

    前言 K8S 性能优化系列文章 xff0c 本文为第三篇 xff1a Kubernetes 大型集群 CIDR 配置最佳实践 系列文章 xff1a K8S 性能优化 OS sysctl 调优 K8S 性能优化 K8S APIServer 调
  • 完美实现Ubuntu系统迁移到另一台电脑/服务器

    一 以A电脑的系统向B电脑迁移为例 第一 xff0c 首先进入A电脑根目录并获取权限 命令 xff1a cd sudo su 第二 xff0c 将根目录所需文件打包为backup tar gz放在当前目录下 xff0c 也可以修改路径直接保
  • catkin 创建工作区

    先确定自己的环境变量是否设置正确 export grep ROS 若出现如下的 xff0c 说明是正确的 declare x ROSLISP PACKAGE DIRECTORIES 61 declare x ROS DISTRO 61 in
  • semtcl-信号量的操作

    头文件 include lt sys types h gt include lt sys ipc h gt include lt sys sem h gt 函数 int semctl xff08 int semid xff0c int se
  • 计算机专业保研面试复习笔记——操作系统

    计算机专业保研面试复习笔记 xff1a 计算机专业保研面试复习笔记 数据结构中的重要算法 计算机专业保研面试复习笔记 数据库 计算机专业保研面试复习笔记 操作系统 计算机专业保研面试复习笔记 计算机网络 文章目录 死锁定义原因条件处理方法死
  • 计算机专业保研面试复习笔记——计算机网络

    计算机专业保研面试复习笔记 xff1a 计算机专业保研面试复习笔记 数据结构中的重要算法 计算机专业保研面试复习笔记 数据库 计算机专业保研面试复习笔记 操作系统 计算机专业保研面试复习笔记 计算机网络 文章目录 三种协议五层协议应用层 x
  • 北航计算机学院往年夏令营+考研面试数理题目汇总

    北航计算机学院硕士复试机经 43 面经 xff1a 北航计算机学院往年夏令营 43 预推免机试题目汇总 北航计算机学院往年夏令营 43 考研面试题目汇总 北航计算机学院往年夏令营 43 考研面试数理题目汇总 以下是笔者汇总的北航计算机学院往
  • 【已解决】nvidia-smi报错:NVIDIA-SMI has failed because it couldn’t communicate with the ... 阿里云GPU服务器

    问题描述 如题 xff0c 起因是在阿里云GPU服务器上 xff0c 使用原先正常运行的镜像生成了容器 xff0c 但容器的显卡驱动出问题了 xff0c 使用nvidia smi命令会报错 NVIDIA SMI has failed bec
  • 【ROS】wiki教程总结以及offboard仿真实现过程

    文章目录 概览ROS基本概念文件结构框架节点 node 之间通讯使用图形工具rqt plot xff1a 显示主题上发布的数据的滚动时间图rqt graph创建系统中正在节点间的动态图 xff1a 从头创建一个offboard包 xff0c
  • 光场相机系列-----相机标定

    光场相机系列 相机标定 通过标定相机 xff0c 得到相机的内参与外参 文章目录 光场相机系列 相机标定前言一 四种坐标系二 标定流程1 坐标系关系2 相机畸变 前言 能过相机标定 xff0c 计算出相机的内参与外参 xff0c 然后通过内
  • ubuntu安装CobaltStrike,MSF,john

    ubuntu安装CobaltStrike ubuntu做服务端 xff0c windows10本机做客户端 xff0c win7做运行木 haha马的机子 span class token function sudo span teamse
  • Android打开系统相册的问题

    xfeff xfeff 在Google Nexus 7 xff08 Version 4 4 2 xff09 平板出现之前 xff0c Intent ACTION GET CONTENT打开相册会返回如下形式的Uri content medi
  • 复试项目2 直流可变稳压电源

    项目描述 xff1a 用集成芯片制作一个0 15V的直流电源 xff0c 且该直流电源具有过压过流保护能力 责任描述 xff1a 负责查找资料 xff0c 选择相应芯片 xff0c 然后再Multisim仿真软件上进行仿真 待仿真电路完善能
  • ARM STMFD, STMFA, STMED, STMEA, LDMFD, LDMFA, LDMED, LDMEA

    LDM是出栈指令 xff0c STM是入栈指令 ED表示empty descending空递减 FA表示full ascending满递增 同理可知其它组合 STMED表示空递减入栈 xff0c 相当于STMDA指令 xff0c 即decr
  • 物理机可ping通虚拟机,虚拟机无法ping通物理机

    本次环境中 xff0c 虚拟机设置虚拟网卡ip 为172 26 130 X xff08 桥接模式 xff09 xff0c 物理机网卡ip为172 26 130 X xff0c 但实际设置后ipconfig 显示出来的ip为 169 254

随机推荐