诚意
诚意如你,当一诚的态度对待

导航

 

在 Flask-SQLAlchemy 基础上

一:启动flask项目--flask-script 

1:主要用法

请先安装flask-script

 manager.py

import app
from flask_script import Manager

my_app = app.create_app()
manager = Manager(my_app)  #让my_app支持Manager
if __name__ == '__main__':
    manager.run()

 

 

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

my_app = Flask(__name__)
db = SQLAlchemy()   #创建

from .views.user import user
from .views.acc import acc

def create_app():
    # 创建数据库引擎,从init_app()源码中可以看到
    my_app.config['SQLALCHEMY_DATABASE_URI']="mysql+pymysql://root:@127.0.0.1:3306/sqlal?charset=utf8"
    # SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
    my_app.config["SQLALCHEMY_POOL_SIZE"] = 5
    # SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
    my_app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
    my_app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False

    my_app.register_blueprint(acc)  #注册蓝图
    my_app.register_blueprint(user)
    db.init_app(my_app)  # #初始化SQLAlchemy , 本质就是将以上的配置读取出来
    return my_app
app/__init__.py

 

 

启动

(venv) E:\python\代码\Flas\blue>python manager.py runserver -h 0.0.0.0 -p 9527

 

2:其它用法

(1)

import app
from flask_script import Manager

my_app = app.create_app()
manager = Manager(my_app)

@manager.command
def runf():
    return 'sucess'

if __name__ == '__main__':
    manager.run()

 

运行:

(venv) E:\python\老男孩\代码\Flas\blue>python manager.py runf
sucess

  

(2)

import app
from flask_script import Manager

my_app = app.create_app()
manager = Manager(my_app)

@manager.option('-n','--name',dest='arg')  #第一个参数是第二个的简写,需要把第三个参数传递到下面函数参数里
def openf(arg):
    return arg

if __name__ == '__main__':
    manager.run()

 

运行

(venv) E:\python\老男孩\代码\Flas\blue>python manager.py openf -n lilz
lilz

(venv) E:\python\老男孩\代码\Flas\blue>python manager.py openf --name lilz
lilz

  

(3)启动项目

import app
from flask_script import Manager

my_app = app.create_app()
manager = Manager(my_app)


@manager.option('-h','--host',dest='host')
@manager.option('-p','--port',dest='port')
def openf(host,port):
    if not host:
        host='127.0.0.1'
    if not port:
        port=9527
    my_app.run(host,port)

if __name__ == '__main__':
    manager.run()

 

启动

(venv) E:\python\老男孩\代码\Flas\blue>python manager.py openf

  

 

二:flask项目数据库迁移

请安装flask-migrate

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

my_app = app.create_app()
manager = Manager(my_app)

from app import db   #db:SQLAlchemy的使用
# Migrate 既然是数据库迁移,那么就得告诉他数据库在哪里
# 并且告诉他要支持那个app
Migrate(my_app,db)

#现在就要告诉manager 有新的指令了,这个新指令在MigrateCommand 中存着呢
manager.add_command('database',MigrateCommand)
"""
数据库迁移指令:
python manager.py database init 
python manager.py database migrate   # Django中的 makemigration
python manager.py database upgrade  # Django中的 migrate
python manager.py database --help  # 查看帮助
"""

@manager.option('-h','--host',dest='host')
@manager.option('-p','--port',dest='port')
def openf(host,port):
    if not host:
        host='127.0.0.1'
    if not port:
        port=9527
    my_app.run(host,port)

if __name__ == '__main__':
    manager.run()

 

 


 

参考资料:

https://www.cnblogs.com/DragonFire/p/10365963.html  (Flask-Migrate)

https://www.cnblogs.com/DragonFire/p/10365827.html    (Flask-Script)

 

 

 

posted on 2019-02-15 19:04  诚意  阅读(655)  评论(0)    收藏  举报