alembic教程

安装
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

转载于:https://www.cnblogs.com/donghaoblogs/p/10389690.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/351648.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实际的Reactor操作–检索Cloud Foundry应用程序的详细信息

CF-Java-Client是一个库,可通过程序访问Cloud Foundry Cloud Controller API 。 它建立在Project Reactor之上,它是Reactive Streams规范的实现,并且使用此库在Cloud Foundry环境中做一些实际的事情是一个有趣的练习。 考虑一个示例用例–给…

mysql生成app接口_Java实现app接口和Socket消息传递(10)java连接MySQL实现App登录接口...

原创:http://blog.csdn.net/iwanghang1.先来个Androiod端口的GIF效果图App图标大家可能没看清,这个是AndroidStudio3.0最新的默认App图标哦~~2.不要忘记把MySQL的jar导进来jar包放入的位置在这里:D:\eclipse-workspace\.metadata\.plugins\or…

centos yum安装nginx 提示 No package nginx available问题解决方法

问题原因: nginx位于第三方的yum源里面,而不在centos官方yum源里面 解决方法: 安装epel(Extra Packages for Enterprise Linux) a、去epel网站 http://fedoraproject.org/wiki/EPEL下载 b、我的系统是centos5.7,cpu是x86_64&#…

链接生成二维码图片

https://packagist.org/packages/houdunwang/qrcode转载于:https://www.cnblogs.com/pansidong/p/10247663.html

mysql pxc测试_Mysql同步机制 - PXC 压力测试 tpcc安装及使用

tpcc是针对mysql单机制定的测试标准,这个标准对于pxc集群来说要求太高,所有后面即使有些项目没有通过也不必太过在意,主要是压一下事务处理能力。Mysql单机虽然写入速度快,但相比于Mysql集群,单机能承受的并发能力远比…

RHEL(Red Hat Enterprise Linux)配置YUM源

前言 YUM(全称为 Yellow dog Updater, Modified)是一个在Fedora中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包&#xff…

java中集合判空_Java中的类型安全的空集合

java中集合判空我以前曾在Java Collections类的实用程序上进行过博客撰写,并且特别地在使用Usings Collections Methods上的博客emptyList(),emptyMap()和emptySet()上进行了博客撰写…

cnn验证码识别代码_中文项目:快速识别验证码,CNN也能为爬虫保驾护航

原标题:中文项目:快速识别验证码,CNN也能为爬虫保驾护航机器之心专栏作者:Nick Li随着卷积网络的推广,现在有各种各样的快捷应用,例如识别验证码和数学公式等。本文介绍了一个便捷的验证码识别项目&#xf…

CentOS yum 源的配置与使用

一、yum 简介 yum,是Yellow dog Updater, Modified 的简称,是杜克大学为了提高RPM 软件包安装性而开发的一种软件包管理器。起初是由yellow dog 这一发行版的开发者Terra Soft 研发,用python 写成,那时还叫做yup(yellow dog updat…

使用ActiveMQ Artemis在两个WildFly服务器之间构建水平JMS桥

有时有必要将不同的Message Broker连接在一起。 在企业消息传递中,此方案称为桥接。 可以使用JMS和其他协议(例如AMQP,ActiveMQ Artemis核心协议)来完成。 该博客文章重点介绍在WildFly中运行的JMS与两个Apache ActiveMQ Artemis …

mysql 逻辑备份 物理备份_数据库的逻辑备份和物理备份--非RMAN

数据库的逻辑备份和物理备份--非RMAN,不用借助其他工具,只要归档日志和物理备份就可以实现的备份数据库的备份和恢复常规而且重要,恢复得到理想状态逻辑备份利用EXP备份,从数据库提取写入操作系统文件1.可以导出一个完整的数据库2.也可以导出…

如何在myeclipse中导入jar包?

右键项目名--->Build Path—>Configure Build Path... 会弹出来一个框 在那四个选项选择 Libraries 然后再选择 右边 第二个选项Add External Jars... 然后就是你JAR的路径。一般将导入的外部包放在lib目录下。

python入门if语句练习_python入门视频:09 if语句_练习.mp4

本视频课程目录如下:python6天学习基础课程 ├─01天│ python入门视频:01 计算机组成-硬件设备.mp4│ python入门视频:02 计算机组成-软件设备.mp4│ python入门视频:03 程序的执行流程和小结_.mp4│ pyt…

spring依赖日志_Spring:设置日志记录依赖项

spring依赖日志这篇文章描述了如何在Spring中设置日志依赖。 它基于Dave Syer的帖子中提供的信息 。 这里提供有关Java日志记录框架的提醒。 该代码示例可在GitHub的Spring-Logging-Dependencies目录中找到。 Spring使用Jakarta Commons Logging API(JCL&#xff0…

网页UTF8转换GBK后出现问号?的原因

网页UTF8转换GBK后出现问号"?"的原因 网页编码转换是进行网页解析和处理的第一步。 互联网上越来越多的网页采用UTF-8编码,UTF-8用1到6个字节编码UNICODE字符,收录了超过10万个字符,BMP部分也有六万多个字符 而在进行编码转换时&…

关于 Number() parsint() abs() 的区别

1. parseInt(‘’) parseInt() 函数可解析一个字符串,并返回一个整数。 如果第一个字符不是数字或者负号,parseInt() 就会返回NaN 2.Number() 函数把对象的值转换为数字 3. Math.abs(x) 取得正数和负数的绝对值 转载于:https://www.cnblogs.com/…

python怎么安装pymysql_Python 安装pyMySQL过程记录

如果你的系统不支持 pip 命令,可以使用以下方式安装:1、使用 git 命令下载安装包安装(你也可以手动下载):$ git clone https://github.com/PyMySQL/PyMySQL$ cd PyMySQL/$ python3 setup.py install2、如果需要制定版本号,可以使用…

C++中的单例模式

单例模式也称为单件模式、单子模式,可能是使用最广泛的设计模式。其意图是保证一个类仅有一个实例,并提供一个访问它的全局访问点,该实例被所有程序模块共享。有很多地方需要这样的功能模块,如系统的日志输出,GUI应用必…

Spring Boot 学习笔记(三)Spring boot 中的SSM

Spring boot 下的 Spring mvc Controller:即为Spring mvc的注解,处理http请求; RestController:Spring4后新增注解,是Controller与ResponseBody的组合注解,用于返回字符串或json数据; package c…

c mysql日期时间格式_mysql日期和时间类型

TIME 类型TIME 类型用于只需要时间信息的值,在存储时需要 3 个字节。格式为 HH:MM:SS。HH 表示小时,MM 表示分钟,SS 表示秒。TIME 类型的取值范围为 -838:59:59~838:59:59&#xff0…