flask_migrate

1.      flask_migrate

doc: https://flask-migrate.readthedocs.io/en/latest/

1.1.    简介

在使用falsk_sqlalchemy时,采用db.create_all()创建表,但在后期修改数据库表字段的时候,修改部分不会自动的映射到数据库中,必须删除表然后重新创建;否则就只能手动sql修改表结构了。

这样当然不好用,flask-migrate就是为了解决这个问题。它可以在每次修改模型(class)后,执行相应命令将修改的字段映射到数据库中。

1.2.    install/uninstall

pip install Flask-Migrate

pip uninstall Flask-Migrate

1.3.    使用

有两种调用方式,flask db init,  python manage.py db init

后一种方式用得比较多。

案例:

#!/usr/bin/env python

#coding:utf-8

 

from app import create_app, db

from flask_migrate import Migrate, MigrateCommand

from flask_script import Manager

import app.models # 没有循环引用,可以直接引用

app = create_app()

manager = Manager(app)

migrate = Migrate(app, db)

manager.add_command('db', MigrateCommand)

if __name__ == '__main__':

manager.run()

pass

    #run_app()

然后执行以下3条命令:

创建迁移仓库(migrations目录),就是初始化:

python manager.py  db init

读取类的内容, 生成版本文件, 并没有真正在数据库中添加或删除;

python manage.py  db migrate -m "添加性别"

python manage.py db migrate

在数据库中增删改;

python manage.py  db upgrade

其它命令:

去查看改变的历史状态;

python manage.py  db history

返回指定的版本状态;

python manage.py  db downgrade  base

2.      实验

2.1.    修改models.py并同步到数据库

修改roles,添加字段

add_comments = db.Column(db.String(200), nullable=True)

执行命令:

python manage.py db migrate

可以查看日志中有

INFO  [alembic.autogenerate.compare] Detected added column 'roles.add_comments'

提交到数据库, python manage.py db upgrade 输出日志

INFO  [alembic.runtime.migration] Running upgrade 136f6a80c853 -> cc904c7ceb92, empty mes

sage

结果验证:

sql_txt = "show columns from roles;"

[('id', 'int(11)', 'NO', 'PRI', None, 'auto_increment'), ('name', 'varchar(64)', 'YES', 'UNI', None, ''), ('add_comments', 'varchar(200)', 'YES', '', None, '')]

结果验证2:python manage.py  db history

136f6a80c853 -> cc904c7ceb92 (head), empty message

<base> -> 136f6a80c853, empty message

flask_migrate的更多相关文章

  1. flask组件之flask_script和flask_migrate的使用

    flask_script的使用 作用: 使用命令启动flask项目 # 在项目的启动文件中 from flask import Flask from settings import Settings ...

  2. Flask插件---flask_script与flask_migrate

    import app from flask_script import Manager from flask_migrate import Migrate,MigrateCommand my_app ...

  3. flask 与 flask_migrate的使用

    flask 与 flask_migrate的使用 一.安装 pip install Flask-Migrate 二.简单使用 # 文件:manage.py from flask_migrate imp ...

  4. flask_migrate 的应用

    怎么查看的命令: python manage.py --help 使用flask_migrate的注意事项:

  5. Flask_Migrate数据库迁移

    migrate数据库迁移 有models,没有迁移仓库.本地新建数据库:首次创建迁移仓库.迁移脚本:执行迁移脚本生成数据库表: python manage.py db init python mana ...

  6. 一个web应用的诞生(7)--结构调整

    现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题. Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的 ...

  7. 从零开始用 Flask 搭建一个网站(一)

    前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ...

  8. flask 扩展之 -- flask-mail

    Flask-Mail 封装了 python 标准库 smtplib 包, 以便于更好的与 Flask 集成. 一. 安装 $ pip install flask-mail 二. 配置 及 初始化 Fl ...

  9. flask 扩展之 -- flask-sqlalchemy

    flask-sqlalchemy.md 一. 安装 $ pip install flask-sqlalchemy 二. 配置 配置选项列表 : 选项 说明 SQLALCHEMY_DATABASE_UR ...

随机推荐

  1. Uncaught TypeError: o.a is not a constructor

    最近在学webpack打包工具,看着挺好玩的,虽然也是工作需要 首先安装啥的我就不说了,后面慢慢写,打包完了以后,运行代码发现提示这个 找半天代码没问题啊,我这个js基础薄弱的人用这个webpack还 ...

  2. python之文件复制

    python文件复制操作. # -*- coding: utf-8 -*- import shutil import os # file_path = 'C:\\Users\\WT\\Desktop\ ...

  3. java.sql.SQLException: Field 'login_date' doesn't have a default value解决方法

    在做web项目的insert插入操作的时候, 由于对于一个字段没有插入数据, xml文件写法如下: <insert id="savePremissUser" > ins ...

  4. springboot引入Oracle依赖

    最近学习spring boot,在网上找一些项目学习,有的项目引入了oracle驱动包,自己搭建一直不成功,百度发现说是权限问题无法下载. 然后参考下面博客终于解决:springboot引入Oracl ...

  5. TinyXML解析

    TinyXML介绍 最近做一个负载均衡的小项目,需要解析xml配置文件,用到了TinyXML,感觉使用起来很容易,给出一个使用TinyXML进行XML解析的简单例子,很多复杂的应用都可以基于本例子的方 ...

  6. 详解多线程MT和多线程MD的区别

    这段时间司在招实习生,而不管是远程的电话面试或者是实际现场面试中领导都喜欢问你这个问题,但是可惜的是能很好答上来的人很少.后来发现不管是应届的实习生,甚至有些实际参加工作几年的人也未必真的了解这个问题 ...

  7. Spring Boot框架 - 数据访问 - 整合Mybatis

    一.新建Spring Boot项目 注意:创建的时候勾选Mybatis依赖,pom文件如下 <dependency> <groupId>org.mybatis.spring.b ...

  8. mybatis--实现数据库增删改查

    首先,创建一个数据库my,并在数据库中插入一张表user,然后在user表中插入一行数据,代码如下: create database my; use my; create table user( id ...

  9. Python 多任务(线程) day1

    多任务就是可以让一台电脑同时执行多个命令. 以前的单核cpu是怎么做到同时执行多个命令的?(时间片轮转) ——其实以前的单核CPU是让操作系统交替执行命令,每个任务执行0.01秒,这样看起来就像是在同 ...

  10. Python - CentOS 下用 yum 安装 pip

    1. 概述 python 安装完成 发现后续需要一个 python 自己的 包管理工具 书上说默认会装, 然后我发现还是没有 命令执行的结果我就不给了, 这个判断起来, 应该是没有太大难度的 2. 环 ...