Flask 第九话之插件Flask-script

简介:

Flask-Script插件为在Flask里编写额外的脚本提供了支持。包括了一个开发服务器,一个定制的Python命令行,用于执行初始化数据库、定时任务和其他属于web应用之外的命令行任务的脚本

一、安装

pip intsall flask-script

 二、基本结构

from flask_script import Manager
manager = Manager(app)

"""代码书写函数"""


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

三、命令定义

[email protected]:执行命令 python manager.py 函数名

from flask_script import Manager
manager = Manager(app)


#  定义命令1:python manager.py greet(函数名) ===> 你好
@manager.command
def greet():
    print("你好")


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

[email protected](-命令简称,--命令全称,dest=‘参数’):执行命令 python manager.py 函数名 -命令简称1 参数1 -命令简称2 参数2...

from flask_script import Manager
manager = Manager(app)


# @manager.option(命令简写,命令全称,dest='传入的参数'),几个参数写几个option
#  定义命令2:python manager.py  add_user -n aaa -a 18 ===> aaa 18
@manager.option('-n','--name',dest='name')
@manager.option('-a','--age',dest='age')
def add_user(name,age):
    print(name,age)


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

3.add_command("子命令",其他命令py文件):执行命令 python manager.py 子命令 (命令方式1/命令方式2)

创建一个db_script.py的文件写子命令代码:

from flask_script import Manager

db_manager = Manager()

# python manager.py db init
@db_manager.command
def init():
    print("迁移仓库创建完毕")

@db_manager.command
def revision():
    print("迁移脚本生成成功")

@db_manager.command
def upgrade():
    print("提交数据库")

manager.py中使用add_command

from flask_script import Managerfrom db_script import db_manager
manager = Manager(app)
# 定义命令3: 添加一个子命令
manager.add_command("db",db_manager)


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

四、小实验

扫描二维码关注公众号,回复: 9585436 查看本文章

实现:命令行操作flask数据库

Flask

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import config
app = Flask(__name__)
app.config.from_object(config)

db = SQLAlchemy(app)

class User(db.Model):
    __tablename__ = "user"
    id = db.Column(db.Integer,primary_key=True,autoincrement=True)
    username = db.Column(db.String(50),nullable=False)
    email = db.Column(db.String(50),nullable=False)

# db.create_all()

@app.route('/')
def hello_world():
    return 'Hello World!'


if __name__ == '__main__':
    app.run()
app.py
HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'db_demo'
USERNAME = 'root'
PASSWORD = '123456'

# 链接数据库的字符串,固定格式
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(
    username = USERNAME,
    password = PASSWORD,
    host = HOSTNAME,
    port = PORT,
    db = DATABASE,
)


SQLALCHEMY_DATABASE_URI = DB_URI
SQLALCHEMY_TRACK_MODIFICATIONS = False
DEBUG = True
TEMPLATES_AUTO_RELOAD=True
config.py

Flask-script

from flask_script import Manager
from app import app,User,db
manager = Manager(app)

# python manager.py  add_sql_user -u aaa -e [email protected]
#  小实验:命令操作flask的数据库
@manager.option('-u','--username',dest='username')
@manager.option('-e','--email',dest='email')
def add_sql_user(username,email):
    u = User(username = username,email = email)
    db.session.add(u)
    db.session.commit()


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

猜你喜欢

转载自www.cnblogs.com/lee-xingxing/p/12417019.html
今日推荐