首页 技术 正文
技术 2022年11月19日
0 收藏 684 点赞 4,958 浏览 1300 个字

常用命令:
1、init:创建一个alembic仓库
2、reversion:创建一个新的版本
3、–autogenerate:自动将当前模型的修改,生成迁移脚本
4、-m:message,可以记录本次迁移做了哪些修改,
5、upgrade:将指定版本的迁移文件映射到数据库中,会执行版本文件中的upgrade函数,如果有多个迁移脚本没有被映射到数据库,name会执行多个映射脚本
6、head:代表最新的迁移脚本的版本号
7、downgrade:会执行指定版本的迁移文件中的downgrade函数
8、heads:展示head指向的脚本文件版本号
9、history:列出所有的迁移版本及其信息
10、current:展示当前数据库中的版本号

经典错误:
1、FAILED:Target database is not up to date
原因:heads和current不同,current落后于heads的版本
解决办法:将current移动到head上:alembic upgrade head
2、FAILED:Can’t locate revision identified by ‘xxxx’
原因:数据库中存在的版本号不存在迁移脚本中
解决办法:删除数据库的alembic_version表中的数据,重新执行alembic upgrade head
3、执行alembic upgrade head时报某个表已存在的错误
原因:执行这个命令的时候,会执行所有的迁移脚本,因为数据库中已经存在了这个表,然后迁移脚本中又包含了创建表的代码
解决办法:1.删除versions中所有的迁移文件、2.修改迁移文件脚本中创建表的代码为pass

准备工作

四十八:数据库之alembic常用命令和经典错误的解决办法

from sqlalchemy import Column, String, Integer, create_engine
from sqlalchemy.ext.declarative import declarative_base# 数据库类型+连接数据库的插件,这里使用的pymysql
DB_URI = 'mysql+pymysql://root:123456@127.0.0.1:3306/test'engine = create_engine(DB_URI)
Base = declarative_base(engine)class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True, autoincrement=True)
username = Column(String(50), nullable=False) def __repr__(self):
return f'username: {self.username}'Base.metadata.drop_all() # 删除所有表
Base.metadata.create_all() # 创建表

alembic revision –autogenerate -m ‘first_commit’

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

alembic upgrade head(最新) 、 alembic upgrade version(指定版本)

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

增加字段

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

减少字段

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

四十八:数据库之alembic常用命令和经典错误的解决办法

查看历史版本

四十八:数据库之alembic常用命令和经典错误的解决办法

查看当前版本

四十八:数据库之alembic常用命令和经典错误的解决办法

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,492
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,907
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,740
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,495
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,132
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,297