flask
/manage.py
import os
from app import create_app
from flask_script import Manager, Server
from flask_migrate import MigrateCommand
// 获取配置
config_name = os.environ.get(‘FLASK_CONFIG’) or ‘default’
// 创建flask实例
app = create_app(config_name)
// 创建命令行启动控制对象
manager = Manager(app)
manager.add_command(“nbxb”, Server(use_debugger=True))
//添加数据库迁移命令
manager.add_command(‘db’, MigrateCommand)
// 启动项目
if name == ‘main’:
# app.run(debug=True)
manager.run()
/app/init.py
from flask import Flask, render_template
from flask_sqlalchemy import SQLAlchemy
from app.extensions import config_extensions
from app.views import config_blueprint
from app.config import config
def create_app(config_name):
# 创建应用实例
app = Flask(name)
# 初始化配置
app.config.from_object(config.get(config_name) or config[‘default’])
# 调用初始化函数
config[config_name].init_app(app)
# 配置扩展
config_extensions(app)
# 配置蓝本
config_blueprint(app)
# 错误页面定制
config_errorhandler(app)
# 返回应用实例
return app
def config_errorhandler(app):
# 如果在蓝本定制,只针对本蓝本的错误有效
# 可以使用app——config_errorhandler定制全局有效的错误显示
@app.errorhandler(404)
def page_not_found(e):
return render_template(‘error/404.html’)
/app/config.py
import os
// base_dir = os.path.abspath(os.path.dirname(file))
// 通用配置
class Config:
# 密钥
SECRET_KEY = os.environ.get(‘SECRET_KEY’) or ‘123456’
# 数据库
SQLALCHEMY_COMMIT_ON_TEARDOWN = True
SQLALCHEMY_TRACK_MODIFICATIONS = False
# 额外初始化配置
@staticmethod
def init_app(app):
pass
//开发环境
class DevelopmentConmfig(Config):
# SQLALCHEMY_DATABASE_URI = ‘mysql+pymysql://root:password@192.168.23.200:3306/visiondata2’
SQLALCHEMY_DATABASE_URI=‘mysql+pymysql://root:ilovepc@10.16.104.101:3306/visiondata2’
//测试环境
class TestingConfig(Config):
# SQLALCHEMY_DATABASE_URI=‘mysql+pymysql://root:password@192.168.23.200:3306/visiondata2’
SQLALCHEMY_DATABASE_URI = ‘mysql+pymysql://root:ilovepc@10.16.104.101:3306/visiondata2’
// 生产环境
class ProductionConfig(Config):
# SQLALCHEMY_DATABASE_URI = ‘mysql+pymysql://root:password@192.168.23.200:3306/visiondata2’
SQLALCHEMY_DATABASE_URI = ‘mysql+pymysql://root:ilovepc@10.16.104.101:3306/visiondata2’
// 配置字典
config = {
‘development’: DevelopmentConmfig,
‘testing’: TestingConfig,
‘production’: ProductionConfig,
‘default’: DevelopmentConmfig
}
/app/extensions.py
from flask_bootstrap import Bootstrap
from flask_sqlalchemy import SQLAlchemy
from flask_migrate import Migrate
from flask_moment import Moment
// 创建对象
bookstrap=Bootstrap()
db = SQLAlchemy()
moment=Moment()
migrate=Migrate(db=db)
// 初始化
def config_extensions(app):
db.init_app(app)
bookstrap.init_app(app)
moment.init_app(app)
migrate.init_app(app)
templates/error
错误404页面存放文件夹
tempaltes/main
路由页面存放文件夹
static/js
静态js文件存放文件夹
/app/views/init.py
// 新建flask蓝本配置初始化类 进行初始化类
from .main import main
// 蓝本配置
DEFAULT_BLULEPRINT = (
# 蓝本,前缀
(main, ‘’),
)
// 封装函数,完成蓝本注册
def config_blueprint(app):
for blueprint, prefix in DEFAULT_BLULEPRINT:
app.register_blueprint(blueprint, url_prefix=prefix)
/app/views/main.py
根据数据库表壳hotwork 分析统计招聘
import json
from flask import Blueprint, render_template, jsonify
from app.models import HotWork, BigDataWork, AvgMoneyCity, AvgMoneyBigData
from app.extensions import db
from sqlalchemy import *
from app.models import skill_require
from app.models import BigDataWork
main = Blueprint(‘main’, name) # 实例化路由
//路由
@main.route(’/’)
//视图函数
def index():
//调用查询
return return render_template(’/main/echarts.html)
//查询函数
def select():
pase