在做项目的过程中,我们都遇到过,经常需要修改我们数据库的字段,在flask中,是通过ORM(对象关系映射)来创建数据库的,表--->model class,字段---->属性

在flask中,我们是通过第三方插件SQLAlchemy来创建数据库表,采用的是db.create_all()方法,这样,在我们修改数据库的Model的字段之后,想要同步数据库,就只能通过删除表,然后重新调用db.create_all()来完成。

所以,flask引入了flask_script 和 flask_migrate(pip install)来解决这个问题:

1、新建manager.py文件,编写如下:

  from flask_script import Manager

  from flask_migrate import Migrate, MigrateCommond

  from app import app

  from apps.models.base import db

  manager = Manager(app)

  # 要使用flask-migrate,必须先绑定db和app

  migrate = Migrate(app, db)

  # 将MigrateCommand添加到manager中,"db"是自定义命令

  manager.add_command("db", MigrateCommond)

  

  if __name__ == "__main__":

    manager.run()

2、打开终端,进入项目根目录,执行下面命令

  python manager.py db init

  初始化成功后,你的项目目录多了一个migrattions文件夹

  

3、然后每次在修改了model的字段后,执行下面的命令

  python manager.py db migrate

  从执行过程中我们可以看到我们修改的字段

  

  执行完成后,再去查看生成的migrations文件夹,下面的versions里面会多出来一个.py的迁移脚本文件,检查表格及字段

  

3、更新数据库

  python manager.py db upgrade

  upgrade会自动读取刚才生成的文件,将数据更新到数据库中。

  

  执行完成后,检查你的数据库,发现数据库字段按照我们的需要更新了。

【注1: python manager.py db migrate 将模型生成迁移文件,只要模型修改了,就执行一次这个命令】

【注2:python manger.py db upgrade 将迁移文件真正映射到数据库中,每次运行了migrate命令,就要记得运行这个命令,不然数据库中的信息是不会被修改的。】

【注3:记得要把对应的模型引入到manager.py文件中,不然执行命令是不会起作用的哦^_^】

4、回滚事物

  1)运行 python manager.py db history

    查看历史版本,得到history-id

  2)运行 python manager.py db downgrade history-id

    回退到指定历史版本

    

flask 更新数据库的更多相关文章

  1. flask 使用Flask-Migrate迁移数据库(创建迁移环境、生成迁移脚本、更新数据库)

    使用Flask-Migrate迁移数据库 在开发时,以删除表再重建的方式更新数据库简单直接,但明显的缺陷是会丢掉数据库中的所有数据.在生产环境下,没有人想把数据都删除掉,这时需要使用数据库迁移工具来完 ...

  2. Python——Flask框架——数据库

    一.数据库框架 Flask-SQLAlchemy (1)安装: pip install flask-sqlalchemy (2)Flask-SQLAlchemy数据库URL 数据库引擎 URL MyS ...

  3. Flask之数据库迁徙

    4.3 数据库迁移 在开发过程中,需要修改数据库模型,而且还要在修改之后更新数据库.最直接的方式就是删除旧表,但这样会丢失数据. 更好的解决办法是使用数据库迁移框架,它可以追踪数据库模式的变化,然后把 ...

  4. 5.flask与数据库

    1.安装postgresql 注意:在flask中,操作数据库还是通过orm调用驱动来操作.sqlalchemy是python下的一款工业级的orm,比Django自带的orm要强大很多,至于什么类型 ...

  5. flask修改数据库字段的类型和长度

    flask修改数据库字段的类型和长度 ​ 在将models中的字段的db.String(256)修改为db.String(1024)后,执行migrate和upgrade操作后,发现数据库并没有更新, ...

  6. flask迁移数据库时报错:Target database is not up的解决方案

    在flask中进行数据库迁移时报错,报错信息为"Target database is not up",解决方案如下 找到alembic的最新版本号,找到文件夹migrate下的最新 ...

  7. flask操作数据库 以及 建表

    创建迁移仓库 首先,安装Flask-Migrate: pip install flask-migrate 将app项目注册,便于使用orm操作 from flask_sqlalchemy import ...

  8. Flask flask-migrate 数据库迁移

    简介 flask-migrate是flask的一个扩展模块,主要是扩展数据库表结构的. 官方文档:http://flask-migrate.readthedocs.io/en/latest/ 使用: ...

  9. 使用CodeFirst创建并更新数据库

    本文主要介绍如何使用CodeFirst模式来新建并更新数据库 在使用Entity Framwork的三种方式(ModelFist.DBFirst.CodeFirst)中,CodeFirst方式书写的代 ...

随机推荐

  1. ELK的sentinl告警配置详解

    背景 sentinl的监控&告警是通过watch实现的. 一.Watch Execution 执行开始的时候, watcher为watch创建watch执行上下文. 执行上下文提供脚本和模板, ...

  2. js时间戳转化时间格式

    // 判断是否前面补0 add0 (m) { return m < 10 ? '0' + m : m }, // 时间转化 timeFormat (timestamp) { // timesta ...

  3. redis sentinel集群的搭建

    背景说明: 这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群. 一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-senti ...

  4. Response()的对象

    addCookie(Cookie cookie):这个方法是向Response容器中添加一个Cookie,然后服务器容器会自动的将这个Cookie回写给客户机的,至于Cookie的相关知识我们会在后面 ...

  5. Scrapy at a glance预览

    1.安装scrapy 2.创建爬虫项目 scrapy startproject test_scrapy 3.创建quotes_spider.py文件4.复制下面代码到quotes_spider.py文 ...

  6. SMB协议原理抓包分析

    SMB协议原理抓包分析 目录: 1.SMB概述 2.SMB原理 3.SMB配置 一.SMB概述 SMB(全称是Server Message Block)是一个协议名,可用于在计算机间共享文件.打印机. ...

  7. VBR的部署

    一.实验拓扑图 二.实验目标 通过部署Veeam Backup & replication,实现虚拟机的备份和还原. 三实验要求 1.  如图所示,开启实验环境.(请参考公众号以前的相关文档) ...

  8. Hadoop2.7.6_01_部署

    1. 主机规划 主机名称 外网IP 内网IP 操作系统 备注 安装软件 mini01 10.0.0.11 172.16.1.11 CentOS 7.4 ssh port:22 Hadoop [Name ...

  9. HBase数据库相关基本知识

    HBase数据库相关知识 1. HBase相关概念模型 l  表(table),与关系型数据库一样就是有行和列的表 l  行(row),在表里数据按行存储.行由行键(rowkey)唯一标识,没有数据类 ...

  10. #007 C语言大作业学生管理系统第四天

    第四天还差恢复已删除学生功能 对于我来说,已经开始很复杂了. 小细节太重要了,边写边出错 1 #include<stdio.h> #include<stdlib.h> #inc ...