flask-script&flask-migrate使用
2019-01-01 23:20:20来源:博客园 阅读 ()
一、简介
Flask-script扩展提供向Flask插入外部脚本的功能,包括运行一个开发用的服务器,一个定制的Python shell、设置数据库的脚本、cronjobs及其他运行在web应用之外的命令行任务,使得脚本和系统分开而Flask-migrate是一个数据库表结构迁移插件,可对数据库进行无缝表结构变化歉意,并能和flask-script配合使用。
二、flask-script使用
pip3 install Flask-Script
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author:wd from flask import Flask from flask_script import Manager app=Flask(__name__) manager = Manager(app) @app.route('/') def index(): return 'index' @manager.command def hello(): print("hello") if __name__ == '__main__': manager.run()
我们可以先通过—help查看其命令列表,默认会加一个shell和runserver命令,shell则是带有flask上下文的环境,可以方便进行调试,而runserver就是运行flask
此时在运行命令 python3 manage.py hello 就会打印hello:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author:wd from flask import Flask from flask_script import Manager,Command,Option app=Flask(__name__) manager = Manager(app) @app.route('/') def index(): return 'index' class mysql(Command): # 命令定义类 def get_options(self): # 为命令添加参数 return [ Option('-p', '--password', dest='password', default='1234',), #参数可以通过-p指定也可以通过—password,dest代表参数值的接受者 Option('-u', '--username', dest='name', default='root'), ] def run(self, name,password): # 定义几个参数run 方法接受几个参数 print("mysql pass:",name,password) manager.add_command('mysql', mysql()) if __name__ == '__main__': manager.run()
运行:
#!/usr/bin/env python3 # -*- coding:utf-8 -*- # Author:wd from flask import Flask from flask_script import Manager app = Flask(__name__) manager = Manager(app) @app.route('/') def index(): return 'index' @manager.option('-u', '--username', dest='name', help='mysql user', default='root') @manager.option('-p', '--password', dest='password', help='mysql pass',default='1234') def mysql(name, password): print('mysql pass:', name, password) if __name__ == '__main__': manager.run()
三、flask-migrate结合flask-script使用
安装
pip install Flask-Migrate
简单示例
from flask import Flask from flask_sqlalchemy import SQLAlchemy from flask_migrate import Migrate,MigrateCommand from flask_script import Manager app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI']="mysql+pymysql://root:1234qwer@10.1.210.33:3306/devops?charset=utf8" app.config['SQLALCHEMY_TRACK_MODIFICATIONS']=True db = SQLAlchemy(app) migrate = Migrate(app, db) manager = Manager(app) manager.add_command('db', MigrateCommand) class User(db.Model): # 如果model在别的文件定义了需要导入到该文件 id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(128)) if __name__ == '__main__': manager.run()
初始化
python3 manage.py db init #该命令会在当前目录下生成一个migrations文件夹,用于记录变更的版本信息
生成版本的迁移
python3 manage.py db migrate
#该命令会在此命令会在migrations下生成一个version文件夹,下面包含了对应版本的数据库操作py脚本以及创建数据库中版本表alembic_version。
数据库更新
python3 manage.py db upgrade
#执行了version文件夹下的相应py版本,对数据库进行变更操作。 #以后的model变化,只要重复migrate和upgrade即可。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- Python连载30-多线程之进程&线程&线程使用 2019-08-13
- Python连载25-函数tell&write&writeline$&a 2019-07-24
- Python连载24-函数list&read&seek 2019-07-24
- python中time.strftime不支持中文,报错UnicodeEncodeError: 2019-07-24
- Django源码安装xadmin报错Apps aren't loaded yet. 2019-07-24
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash