flask五:配置
1.创建配置文件:
# application/settings.py import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) def get_db_uri(db_info): engine = db_info.get("ENGINE") or "sqlite" driver = db_info.get("DRIVER") or "sqlite" user = db_info.get("USER") or "" password = db_info.get("PASSWORD") or "" host = db_info.get("HOST") or "" port = db_info.get("NAME") or "" name = db_info.get("NAME") return "{}+{}://{}:{}@{}:{}/{}".format(engine, driver, user, password, host, port, name) class Config: DEBUG = False TESTING = False SQLALCHEMY_TRACK_MODIFICATIONS = False class DevelopConfig(Config): DEBUG = True db_info = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "123456", "HOST": "localhost", "PORT": "3306", "NAME": "flask_test" } SQLALCHEMY_DATABASE_URI = get_db_uri(db_info) class TestConfig(Config): DEBUG = False TESTING = True db_info = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "123456", "HOST": "localhost", "PORT": "3306", "NAME": "flask_test" } SQLALCHEMY_DATABASE_URI = get_db_uri(db_info) class StagingConfig(Config): db_info = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "123456", "HOST": "localhost", "PORT": "3306", "NAME": "flask_test" } SQLALCHEMY_DATABASE_URI = get_db_uri(db_info) class ProductConfig(Config): db_info = { "ENGINE": "mysql", "DRIVER": "pymysql", "USER": "root", "PASSWORD": "123456", "HOST": "localhost", "PORT": "3306", "NAME": "flask_test" } SQLALCHEMY_DATABASE_URI = get_db_uri(db_info) ENV = { "develop": DevelopConfig, "testing": TestConfig, "staging": StagingConfig, "product": ProductConfig, "default": DevelopConfig }
2.创建app时,导入配置对象
# application/__init__.py from flask import Flask from application.views import init_view from application.models_ext import init_model from application.settings import ENV def create_app(env): app = Flask(__name__) app.config.from_object(ENV.get(env, "default")) init_model(app) init_view(app) return app
3.环境变量env,从框架入口manage.py中传入,自动根据主机OS配置的FLASK_ENV判断环境:开发,还是测试,或线上环境
# manage.py import os from flask_script import Manager from application import create_app env = os.environ.get("FLASK_ENV", "develop") app = create_app(env) manager = Manager(app) if __name__ == '__main__': manager.run()
4.环境变量FLASK_ENV获取
xiaohudeMacBook-Pro:local **$ vim ~/.bashrc xiaohudeMacBook-Pro:local **$ source ~/.bashrc xiaohudeMacBook-Pro:local **$ python Python 3.7.5 (default, Nov 1 2019, 02:16:32) [Clang 11.0.0 (clang-1100.0.33.8)] on darwin Type "help", "copyright", "credits" or "license" for more information. >>> import os >>> os.environ.get("FLASK_ENV") 'develop'
$ cat ~/.bashrc
export FLASK_ENV="develop"
posted on 2020-06-19 00:34 myworldworld 阅读(125) 评论(0) 收藏 举报