处理了model与schema就可以进行数据的实际操作了。
flask应用可以通过flask-sqlachemy进行ORM操作。
APP与数据库绑定
定义flask应用,对该应用进行配置,绑定数据库链接信息,并初始化DB,相关代码如下
app.py 这是整个系统的入口,后续将添加登入登出(flask-login),SSO接入,蓝图,以及API接入
from flask import Flask, redirect, render_template, request
from model import *
app = Flask(__name__, template_folder="templates")
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'  # 使用SQLite数据库,可以根据需要更改
db.init_app(app)  # 初始化绑定DB 与 Flask
if __name__ == '__main__':
    app.run(debug=True)初始化数据库
初始化数据库这里采用命令行方式进行,就是采用一个manager文件绑定migration与flask应用。具体使用方法可以参考
Flask ORM 学习笔记Part02:Flask-Migrate的使用,数据库创建与数据导入
manager.py 这个示例中只是演示了绑定app与migration,实际上,还可以进行命令行操作。这里演示使用cli,以及click解析参数进行的一个简单的数据库查询。
# -*- coding:UTF-8 -*-
from app import app
from model import *
from modelschema import *
from flask_migrate import Migrate
import click
migrate = Migrate(app, db, render_as_batch=True)
# 迁移命令管理与app,建立关系
# sqlite使用此参数render_as_batch=True使用batch操作替换普通操作,因为普通操作不支持表名,列名的改
@app.cli.command('get')
@click.option('--id', default=1)
@click.option('--m', default='Project')
def get_info(id, m):
    """
    示例代码,用于演示
    -id  -m
    """
    modlelist = {'Project': Project, 'Account': Account, 'Host': Host}
    schemalist = {'Project': ProjectSchema, 'Account': AccountSchema, 'Host': HostSchema}
    if m in ['Project', 'Account', 'Host']:
        m = modlelist[m]
        try:
            info = m.query.filter_by(id=id).one()
            print(info)
            exit(0)
        except Exception as E:
            print(str(E))
            print('请输入正确的id')
            exit(1)
    else:
        print('请输入正确的表名:Project, Acccount, Host')
        exit(1)
# $env:FLASK_APP = "manager"
# set FLASK_APP=manager:app
# export FLASK_APP="manager"
# flask db init
# flask db migrate
# flask db upgrade
绑定manager与flask应用后可以使用这个命令进行数据库简单查询
flask get # 不加任何参数
flask get --id 2 -m Account  # 添加两个参数










