Flask 应用程序看不到环境变量
environ variable not visible to flask app
Flask 应用程序无法从 .env 获取 SQLALCHEMY_DATABASE_URI 值以便在 ProstgreSQL 数据库中创建表。
配置如下:
import os
class Config(object):
DEBUG = False
TESTING = False
CSRF_ENABLED = True
SECRET_KEY = os.environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')
SQLALCHEMY_TRACK_MODIFICATIONS = False
...
我试过了
>>> from app.extensions import db
>>> db.create_all()
和
>>> from app import create_app
>>> app = create_app()
>>> from app.extensions import db
>>> db.create_all()
和
>>> from app import create_app
>>> app=create_app()
>>> app.app_context().push()
>>> from app.extensions import db
>>> db.create_all()
在 Whosebug 上的朋友们的帮助下,我开始工作了:
>>> from dotenv import load_dotenv
>>> load_dotenv()
>>> import os
>>> os.getenv('SQLALCHEMY_DATABASE_URI')
>>> from app import create_app
>>> app = create_app()
>>> app.app_context().push()
>>> from app.extensions import db
>>> db.create_all()
提问:bug在哪里? config.py
有 import os
行。 python_dotenv
已安装。我应该怎么做才能避免使用上面过程中的前四行?
非常感谢任何帮助。
直到 load_dotenv()
,.env
中的任何内容都将被忽略。问题是在哪里做 load_dotenv()
。它必须发生在任何人进入 os.environ
期待 .env
的东西出现之前。
如果您遵循 Flask Mega 教程中的模式,通常的位置就在
之前
class Config(object):
例如,https://github.com/miguelgrinberg/microblog/blob/v0.15/config.py
Flask 应用程序无法从 .env 获取 SQLALCHEMY_DATABASE_URI 值以便在 ProstgreSQL 数据库中创建表。
配置如下:
import os
class Config(object):
DEBUG = False
TESTING = False
CSRF_ENABLED = True
SECRET_KEY = os.environ.get('SECRET_KEY')
SQLALCHEMY_DATABASE_URI = os.environ.get('SQLALCHEMY_DATABASE_URI')
SQLALCHEMY_TRACK_MODIFICATIONS = False
...
我试过了
>>> from app.extensions import db
>>> db.create_all()
和
>>> from app import create_app
>>> app = create_app()
>>> from app.extensions import db
>>> db.create_all()
和
>>> from app import create_app
>>> app=create_app()
>>> app.app_context().push()
>>> from app.extensions import db
>>> db.create_all()
在 Whosebug 上的朋友们的帮助下,我开始工作了:
>>> from dotenv import load_dotenv
>>> load_dotenv()
>>> import os
>>> os.getenv('SQLALCHEMY_DATABASE_URI')
>>> from app import create_app
>>> app = create_app()
>>> app.app_context().push()
>>> from app.extensions import db
>>> db.create_all()
提问:bug在哪里? config.py
有 import os
行。 python_dotenv
已安装。我应该怎么做才能避免使用上面过程中的前四行?
非常感谢任何帮助。
直到 load_dotenv()
,.env
中的任何内容都将被忽略。问题是在哪里做 load_dotenv()
。它必须发生在任何人进入 os.environ
期待 .env
的东西出现之前。
如果您遵循 Flask Mega 教程中的模式,通常的位置就在
之前class Config(object):
例如,https://github.com/miguelgrinberg/microblog/blob/v0.15/config.py