Flask-Migrate是一个为Flask应用处理SQLAlchemy数据库迁移的扩展,使得可以通过Flask的命令行接口或者Flask-Scripts对数据库进行操作。

安装

pip3 install Flask-Migrate

例子:test.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///lrh.db' db = SQLAlchemy(app)
migrate = Migrate(app, db) class User(db.Model):
__tablename__ = 'users'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))

上述代码指定数据库为lrh.db,如果不存在将新建;我们建立了User模型,指定它对应的在数据库中的名字为users,注意此时表还没有在建立。数据库需要指定,此代码也没有新建数据库app.db,如果URI中指定的数据库原先不存在,则没有app.db这个数据库存在。

使用flask命令运行上面的代码需要先设置环境变量FLASK_APP

export FLASK_APP=test.py       #注释:注意等号两边不能有空格

常用命令

初始化

flask db init

这个命令将会新建一个名字为migrations的文件夹,并且记录一个数据库版本号,一份保留在migrations中,一份保存在数据库中(新建一张名字为alembic_version的表来保存),值得注意大是新建了migrations文件夹后需要对数据库模型进行修改,然后使用flask-migrations进行迁移,这样才产生第一个版本号。

迁移

flask db migrate

迁移脚本最好仔细审查并且按需编写,因为Alembic(flask-migrate的核心)不会检测模型所有大变化,可以参考这个链接,查看Alembic的限制。如果不修改将使用默认策略迁移。

升级
flask db upgrade

每次数据库模型变化,需要重复使用migrate命令和upgrade命令(按顺序组合使用),使用成功后将修改版本号。

帮助

flask db --help

使用这个命令查看更多命令。

最新文章

  1. APP开发:一个APP开发需要哪些技术人员?
  2. C++开发过程多线程同步lock的实现
  3. Debug模式,不能进入打断点的类,反而进入代理类里
  4. 读javascript高级程序设计05-面向对象之创建对象
  5. php大力力 [015节]兄弟连高洛峰php教程(土豆网栏目地址)
  6. lighttpd的超时参数详解
  7. Cordova 3.0 Plugin 安装 及"git" command line tool is not installed
  8. iOS stretchableImageWithLeftCapWidth 图片放大不变形
  9. Request.Params用法
  10. 1203.1——条件语句 之 if语句
  11. Matlab Error (Matrix dimensions must agree)
  12. 在React+Babel+Webpack环境中使用ESLint
  13. 提交到APPStore出现ERROR ITMS-90474
  14. ubuntu14.04 64位 安装JDK1.7
  15. 小工具:批量导入导出主机上的docker镜像
  16. mongodb3.6 (五)net 客户端访问mongodb设置超时时间踩过的“坑”
  17. springmvc源码分析——入门看springmvc的加载过程
  18. Widows自带系统监控工具——24小时监控服务器性能
  19. loglog 函数的使用
  20. Linux记录-shell获取hdfs used使用

热门文章

  1. Stones【中石油个人赛第十七场I】
  2. Right turn【模拟+标记】
  3. Flask URL构建
  4. FR嵌套报表(Nested Report)
  5. Spring系列.AOP使用
  6. Andrew Ng - 深度学习工程师 - Part 2. 改善深层神经网络:超参数调试、正则化以及优化(Week 2. 优化算法)
  7. linux网络编程-socket(36)
  8. 【转】HBase的MapReduce调用
  9. JDK8--04:内置接口
  10. 判断CString 字符串里面是否全部为数字