存储数据库位置和凭证变量Python / Flask应用程序

时间:2014-10-25 18:46:32

标签: python postgresql flask

我正在浏览构建Python / Flask应用程序的在线教程。在我安装Postgres并搞乱我的数据库之前,我可以从命令行启动我的应用程序没问题。现在,每次重新启动命令提示符时,我都必须重新定义APP_SETTINGS和DATABASE_URL变量。在我改进变量之后,应用程序工作正常,但我知道这不是它应该工作的方式。错误如下:

 Traceback (most recent call last):
 File "app.py", line 12, in <module>
 app.config.from_object(os.environ['APP_SETTINGS'])
 File "C:\envs\acme\lib\os.py", line 423, in __getitem__
 return self.data[key.upper()]
 KeyError: 'APP_SETTINGS'

然后我将使用&#34; set&#34;重新定义变量:

set APP_SETTINGS=config.DevelopmentConfig

以下是我用于app.py和config.py

的代码

config.py:

import os
# default config
class BaseConfig(object):
    DEBUG = False
    SECRET_KEY = 'secret key'
    SQLALCHEMY_DATABASE_URI = os.environ['DATABASE_URL']

class DevelopmentConfig(BaseConfig):
    DEBUG = True

class ProductionConfig(BaseConfig):
    DEBUG = False

app.py

import os
app.config.from_object(os.environ['APP_SETTINGS'])

上面在config.py文件中列出的DATABASE_URL变量也是如此。我也得到一个KEYERROR,必须使用&#34; set&#34;重新定义变量。以及在下面输入我的用户名和密码:

set DATABASE_URL=postgres://username:password@localhost/discover_flask_dev

我使用的是Windows 8和Python 2.7。我在我的环境中安装了这些工具:

Flask==0.10.1
Flask-SQLAlchemy==2.0
Jinja2==2.7.3
MarkupSafe==0.23
SQLAlchemy==0.9.8
Werkzeug==0.9.6
gunicorn==19.1.1
ipython==2.3.0
itsdangerous==0.24
psycopg2==2.5.2
pyreadline==2.0

我假设有一种解决上述问题的基本方法。请指教。谢谢!

1 个答案:

答案 0 :(得分:1)

您的关键问题似乎是“每次重新启动命令提示符时,我都必须重新定义APP_SETTINGS和DATABASE_URL变量”。

this superuser answer开始,看起来有两个环境变量命令:SET(在命令窗口关闭时恢复)和SETX(命令窗口关闭后仍然存在)。

而不是
set DATABASE_URL=postgres://username:password@localhost/discover_flask_dev

尝试使用
setx DATABASE_URL "postgres://username:password@localhost/discover_flask_dev"

请注意语法略有不同:SETX使用双引号"..",并且不使用等于=