Closed wingfish closed 5 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)
flask.cli 中直接支持 click,但是这样会有一个兼容性问题,如果我们用 sanic 这类不直接支持 click 的 server 包,就会不行。
考虑还是使用目前 jman 的做法,用 click,但是 click 写法本身和 flask 无关,只和 server 逻辑有关,这样以后支持更多 server 的话,命令行方式可以继续兼容。
通过 summer.py create_tables 来创建默认的数据库