为了在 ProstgreSQL 数据库中创建表,Flask 应用程序没有从 .env 获取 SQLALCHEMY_DATABASE_URI 值。
这里的配置:
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()
在我的 Stackoverflow 朋友的帮助下,我进入了工作过程:
>>> 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()
问题:错误在哪里? config.py
有 import os
行。 python_dotenv
已安装。我应该怎么做才能避免使用上面 proc 中的前四行?
非常感谢任何帮助。
答案 0 :(得分:1)
直到 load_dotenv()
,.env
中的任何内容都会被忽略。问题是在哪里做load_dotenv()
。它必须在任何人接触到 os.environ
并期待 .env
出现在那里之前发生。
通常的地方,如果你遵循 Flask Mega 教程中的模式,就在之前
class Config(object):
例如,https://github.com/miguelgrinberg/microblog/blob/v0.15/config.py