处理了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,flask,数据库,id,从零开始,import,app
From: https://blog.51cto.com/quietguoguo/8892310