chinapnr / py-summer

Simplify and strengthen the Python web server development, mainly RESTful server, use Flask as the backend.
GNU General Public License v3.0
3 stars 1 forks source link

支持 flask 的命令行方式以及测试命令行创建数据表 #4

Closed wingfish closed 5 years ago

wingfish commented 6 years ago

flask.cli 中直接支持 click,但是这样会有一个兼容性问题,如果我们用 sanic 这类不直接支持 click 的 server 包,就会不行。

考虑还是使用目前 jman 的做法,用 click,但是 click 写法本身和 flask 无关,只和 server 逻辑有关,这样以后支持更多 server 的话,命令行方式可以继续兼容。

通过 summer.py create_tables 来创建默认的数据库

wingfish commented 6 years ago

model.py 举例

from sum_server import db

class Test(db.Model):

    # 建立用户信息表
    __tablename__ = 'test_table'
    uid = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(64), unique=True, nullable=False, index=True)
    score = db.Column(db.SmallInteger)

命令行 summer.py 举例

import click

from sum_server import app, db

# 2017.3.3 2018.7.11 created by David Yi
@click.group()
def cli():
    """summer server 启动命令行管理工具"""

# 2017.3.3 3.9 created by David Yi
# 2018.7.11 edit by David Yi
# 创建 users table,
@click.command()
def create_tables():
    """删除当前数据库内容,并创建数据库"""

    click.echo(click.style('Create db tables.', fg='red'))

    db.drop_all()
    db.create_all()

    click.echo(click.style('Tables created success.', fg='blue'))

# 2017.3.3 3.25 created by David Yi
# 2018.7.11 edit by David Yi
# 启动 server
@click.command('start')
@click.option('--reload', default=False, type=click.BOOL, help='是否自动重新加载服务')
def start_server(reload):
    """启动 server"""

    # jarvis_welcome = ' '.join(['jarvis server start under', jarvis_man.dt['server']['status'], 'status'])

    click.echo(click.style('server start', fg='blue'))
    # logger.info(jarvis_welcome)

    # print(jarvis_man.dt['server']['upload_folder'])

    app.run(use_reloader=reload, host='127.0.0.1', port=app.config['IP_PORT'])

# 2017.2.7 2.27 3.3 create by David Yi
# server 主要执行过程
if __name__ == '__main__':

    cli.add_command(start_server)
    cli.add_command(create_tables)