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

常用命令:
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

准备工作

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

# 数据库类型+连接数据库的插件,这里使用的pymysqlDB_URI = ‘mysql+pymysql://root:[email protected]: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 upgrade head(最新) 、 alembic upgrade version(指定版本)

增加字段

减少字段

查看历史版本

查看当前版本

原文地址:https://www.cnblogs.com/zhongyehai/p/11832030.html

时间: 2024-11-03 22:06:51

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

alembic常用命令和经典错误解决办法

原文地址:https://www.cnblogs.com/wuheng-123/p/9729074.html

mysql导入数据库中的存储过程和函数出现错误的解决办法

mysql导入数据库中的存储过程和函数出现错误的解决办法 调用一个远程拷贝的本地Mysql的储存过程 报错:[Err] 1449 - The user specified as a definer ('repl'@'192.168.1.%') does not exist  解决想法: 凭借以前经常见到的[email protected]报错,给root赋值所有权限: grant all privileges on *.* to [email protected]"%" identif

【Mongodb教程 第十八课 】MongoDB常用命令 数据库命令 集合操作命令

面向文档的 NoSQL 数据库主要解决的问题不是高性能的并发读写,而是保证海量数据存储的同时,具有良好的查询性能. 条件操作符 <, <=, >, >=  这个操作符就不用多解释了,最常用也是最简单的 db.collection.find({ "field" : { $gt: value } } );    //  大于:    field > value db.collection.find({ "field" : { $lt: va

QT开发(四十八)——数据库SQL接口层

QT开发(四十八)--数据库SQL接口层 SQL接口层提供了对数据库的访问,主要类包括Qt SQL模块中的QSqlDatabase.QSqlQuery.QSqlError.QSqlField.QSqlIndex和QSqlRecord.QSqlDatabase类用于创建数据库连接,QSqlQuery用于使用SQL语句实现与数据库交互. 一.QSqlDatabase 1.QSqlDatabase简介 QSqlDatabase类提供了通过连接访问数据库的接口,QSqlDatabase对象本身代表一个连

你的一天也可以是四十八小时

只要你愿意,你的一天将是四十八小时,而不是二十四小时. 时间就是上帝给你的资本.命运之神是公平的,他给每个人的时间都是公平的,他给每个人的时间都不多不少:但成功女神却是挑剔的,她只让那些能把24小时变成48小时的人接近她.下面就是她的助手时间使者透露出来的成功秘笈: 直奔主题 聪明人要远离琐碎,保持焦点.由于我们一次只能踏上一条船,“船”的选择便显得格外重要.为此,经济学家告诉我们,要保持焦点:一次只做一件事情,一个时期只有一个重点.西屋电脑公司总经理迪席勒办公室门上的标语是:“不要带问题给我,

产品定位四十八招(12)定位盈利专家吴玉龙

第四十招:基于"专用"定位策略<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> 广告语"就像刚刚步出美发厅"定位"美发厅的选择"牌是美发厅专用的一种洗发香波. 第四十一招:"一次性使用"定位策略 1987年,柯达公司推出一次性相机获得了巨大的成功.1993年,仅在美国就销售了930万个一次性相

搜索引擎--范例:谈谈django--mysql数据库的一些常用命令

现在基本没有什么能离得开数据库了,django我一直用的都是mysql的数据库,这次和大家说说django--mysql数据库的一些常用命令吧 1:命令行登陆mysql C:\Users\Administrator>mysql -uroot -p Enter password: ******** 2:创建一个新的数据库并使用它 mysql> create database t; Query OK, 1 row affected (0.02 sec) mysql> use t; Datab

ActionScript3游戏中的图像编程(连载四十八)

总目录:http://blog.csdn.net/iloveas2014/article/details/38304477 3.1.4 简单滤镜中的渐变原理探讨 我们再简单的看一下滤镜里的渐变条. 为了尽可能地减少复杂的文字轮廓所造成的干扰,我再次使用方块进行试验. 我画了一个紫色的方块(啥颜色其实都无所谓了),然后添加渐变发光滤镜,把模糊和距离值都调大,以便看清楚渐变的轮廓,然后给渐变条随意地加上几种颜色(图 3.30) 图 3.30 模糊范围较大的渐变发光 可以看到,渐变条上的色彩从右往左地

【科普】江户四十八手图文最详细解释

完整预览图: 四十八手解説 [日本語]:http://hp.vector.co.jp/authors/VA044354/japaneseindetail.html 较难招式须注意安全: 虽然招式号称48招,不过就连推出教战手册的旅馆业者也认为,一般人试个三.五招其实就差不多了: 而且其中有些动作还属于[超高难度]级 比方说25招[搥衣棒],女方抱住两腿膝盖后侧,下半身直直往头顶举,男方则以相反方向由上向下顶. 还有27招[推车],男方站着将女方双脚抬起来,女方用双手撑在床面,身体成四十五度悬在空