flask_migrate
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的更多相关文章
- flask组件之flask_script和flask_migrate的使用
flask_script的使用 作用: 使用命令启动flask项目 # 在项目的启动文件中 from flask import Flask from settings import Settings ...
- Flask插件---flask_script与flask_migrate
import app from flask_script import Manager from flask_migrate import Migrate,MigrateCommand my_app ...
- flask 与 flask_migrate的使用
flask 与 flask_migrate的使用 一.安装 pip install Flask-Migrate 二.简单使用 # 文件:manage.py from flask_migrate imp ...
- flask_migrate 的应用
怎么查看的命令: python manage.py --help 使用flask_migrate的注意事项:
- Flask_Migrate数据库迁移
migrate数据库迁移 有models,没有迁移仓库.本地新建数据库:首次创建迁移仓库.迁移脚本:执行迁移脚本生成数据库表: python manage.py db init python mana ...
- 一个web应用的诞生(7)--结构调整
现在所有的Py代码均写在default.py文件中,很明显这种方法下,一旦程序变的负责,那么无论对于开发和维护来说,都会带来很多问题. Flask框架并不强制要求项目使用特定的组织结构,所以这里使用的 ...
- 从零开始用 Flask 搭建一个网站(一)
前言 笔者之前未接触过 Python,只是略懂一点前端,所以说从零开始也相差无几吧.Flask 是一个轻量级的基于 Python 的框架,但是扩展性非常良好(Github 上 22000 多个 sta ...
- flask 扩展之 -- flask-mail
Flask-Mail 封装了 python 标准库 smtplib 包, 以便于更好的与 Flask 集成. 一. 安装 $ pip install flask-mail 二. 配置 及 初始化 Fl ...
- flask 扩展之 -- flask-sqlalchemy
flask-sqlalchemy.md 一. 安装 $ pip install flask-sqlalchemy 二. 配置 配置选项列表 : 选项 说明 SQLALCHEMY_DATABASE_UR ...
随机推荐
- numpy特性
numpy特性 待办 可获取最小值最大值或者排序等操作的索引,然后通过索引取得对应值或者对应值的序列 按行按列求和.按行按列求积 方差等等统计函数使用 enter description here e ...
- bzoj 2049: [Sdoi]Cave 洞穴探测 (LCT)
第一次写lct (这是一道lct裸题 这次没有可爱(划掉)的同学教我,虽然有模板,但是配合网上的讲解还是看不懂QAQ 然后做了几道题之后总算有些感觉辣 于是决定给自己挖个坑,近期写一个lct详解(不过 ...
- UPF set_port_attribute
『set_port_attribute』, 在IEEE 1801-2015 中该命令定义如下,不是所有的工具都支持所有的option: 这个命令用于描述port 在『未知』区域的power 连接情况, ...
- python正则分组
python的正则表达式本身每一个字符串都是独立的 看下面的例子就理解分组的含义了~ ab*表示的是查找a和(0个或多个b),就是*是单独针对b的,所以返回a (ab)*则表示ab是一个组是一个整体, ...
- numpy (1.16.4) has the default value of allow_pickle as False.
My version of numpy (1.16.4) has the default value of allow_pickle as False. numpy版本是1.16.4,allow_pi ...
- ASP.NET的 Razor引擎和JavaScript是一种什么关系
Razor能做的JS大部分能做,不是全部.比如说,如果你用了Entity Frame一类的ORM的时候,Razor可以直接绑定数据库数据,但JS就不可能直接访问数据库——必须通过其他web servi ...
- Sql 中获取年月日时分秒的函数
getdate():获取系统当前时间 dateadd(datepart,number,date):计算在一个时间的基础上增加一个时间后的新时间值,比如:dateadd(yy,30,getdate()) ...
- 计算几何-RC-poj2187
This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 今天学习一下旋( ...
- bugku web 5
首先进入网站http://123.206.87.240:8002/web5/index.php 进入之后就会看到 然后点击F12就会打开后台 然后就会发现有一串东西就是这个然后经过搜索是jsfuck ...
- 分享链接在QQ内总是被多人举报怎么办,域名防红的方案
背景 相信大家经常会遇到一个头疼的问题就是,自己的推广链接会因多人投诉举报导致链接在QQ内转发分享会被QQ管家拦截,用户无法打开访问的问题. 那么当大家遇到这个问题的时候应该怎么办呢?不用急,下面分享 ...