我试过几个问题,但没法解决。有人能帮我修好这个吗。我在我的一个项目中使用烧瓶,这是我得到的错误。下面是代码和回溯。在
代码与中的第12行相关sqlutils.py. 在
import hashlib
import os
import oursql
import uuid
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from mainapp import app
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+oursql://'+os.environ.get('DB_USR') \
+ ':' + os.environ.get('DB_PASSWD')+'@'\
+ os.environ.get('DB_HOST') + '/school_new'
db = SQLAlchemy(app)
回溯:
^{pr2}$
正如其他人所提到的,using ^{} on a dictionary will result in a ^{} if the value does not exist :
它是一个字典,所以你甚至可以做类似
os.environ['DB_HOST']
的事情,而不是使用.get()
。为什么?因为如果这个值不存在的话,你会在启动时得到一个错误!对于你的应用程序来说,这可能是非常重要的。:)好的,很明显,
os.environ.get('DB_HOST')
在代码中返回了None
。为什么?在^{} 允许您从shell访问操作系统的环境变量。显然,变量
DB_HOST
没有在任何地方设置!在要解决您的问题,您必须在您的操作系统中为
DB_HOST
设置环境变量,或者以其他方式提供信息。就个人而言,我喜欢通过argparse将这些值作为命令行参数传入,但这取决于您!在如果您真的想使用操作系统的环境,我将给出一个在bash(我的shell)中设置变量的示例。你必须查找其他shell的并行指令。在
从bash命令行:
请注意,在Python中使用
^{2}$os.environ
不能在变量自身的交互作用之外为这个变量设置一个新值。也就是说:要调试,请尝试:
并记录/打印
app.config['SQLALCHEMY_DATABASE_URI']
。在当环境不包含您的设置时,您需要提供一些合理的默认值:
或在未提供关键设置时引发错误:
^{2}$相关问题 更多 >
编程相关推荐