0
点赞
收藏
分享

微信扫一扫

从零开始构建报警中心:part08 数据库链接与验证

惠特曼 2023-12-19 阅读 48

处理了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  # 添加两个参数

从零开始构建报警中心:part08 数据库链接与验证_初始化

举报

相关推荐

0 条评论