def create_db(current_app): from app.config.common import config conn = config.get("DB_CONNECTION") echo = config.get("DB_ECHO") db.update(conn, echo) from sqlalchemy_utils import database_exists, create_database if not database_exists(db.get_engine().url): create_database(db.get_engine().url, encoding=config.get("DB_URL_ENCODING"))
def init_db(): """ 自动创建数据库,更新sql,进行数据填充 """ from alembic import command from alembic.config import Config from app.config.common import config as app_config config = Config(app_config.get("ALEMBIC_CONFIG")) config.set_main_option("script_location", app_config.get("ALEMBIC_SCRIPT_LOCATION")) config.set_main_option("sqlalchemy.url", app_config.get("ALEMBIC_SQLALCHEMY_URL")) command.upgrade(config, "head") command.stamp(config, "head")
def init_i18n(app): """ 初始化翻译 """ from flask_babel import Babel from flask import request from app.config.common import config app.config["BABEL_TRANSLATION_DIRECTORIES"] = config.get( "BABEL_TRANSLATION_DIRECTORIES" ) app.config["BABEL_DEFAULT_LOCALE"] = config.get("BABEL_DEFAULT_LOCALE") babel = Babel(app) @babel.localeselector def get_locale(): return request.accept_languages.best_match(["en", "zh"])
def init_login(app): """ 添加登录插件,手机哟理解那个flask-login,cookie+session来做登录 todo:后期需要改成jwt+redis来实现高可用 """ from flask_login import LoginManager from app.config.common import config login_manager = LoginManager() app.config["SECRET_KEY"] = config.get("SECRET_KEY") login_manager.init_app(app)
from app import app_runner from app.config.common import config if __name__ == "__main__": flask_app = app_runner.create_app() flask_app.run( config.get("APP_HOST"), config.get("APP_PORT"), debug=config.get("APP_DEBUG"), threaded=True, )
from app.app_runner import auto_load_model from app.config.common import config as app_config from logging.config import fileConfig from sqlalchemy import engine_from_config from sqlalchemy import pool from alembic import context # this is the Alembic Config object, which provides # access to the values within the .ini file in use. config = context.config _ = auto_load_model() config.set_main_option("script_location", app_config.get("ALEMBIC_SCRIPT_LOCATION")) config.set_main_option("sqlalchemy.url", app_config.get("ALEMBIC_SQLALCHEMY_URL")) # Interpret the config file for Python logging. # This line sets up loggers basically. fileConfig(config.config_file_name) # add your model's MetaData object here # for 'autogenerate' support # from myapp import mymodel # target_metadata = mymodel.Base.metadata target_metadata = Base.metadata # other values from the config, defined by the needs of env.py, # can be acquired:
from flask import Blueprint from app.config.common import config from app.api_doc.controller import ( get_api_doc_view, get_api_doc_html_view, ) route = Blueprint('api_doc', __name__, template_folder=config.get("API_DOC_TEMPLATES")) route.add_url_rule('/v1/api_doc', view_func=get_api_doc_view, methods=["GET"]) route.add_url_rule('/v1/api_doc.html', view_func=get_api_doc_html_view, methods=["GET"])