【发布时间】:2014-03-08 20:35:46
【问题描述】:
这是在我的应用程序文件头中:
import os
import sys
from cgi import parse_qs, escape
import pymongo
from pymongo import MongoClient
我已经安装了 mongoDB 2.4 设备,并且正在尝试通过连接
client = MongoClient('mongodb:$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/')
我得到错误:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/mongo_client.py", line 239, in __init__
res = uri_parser.parse_uri(entity, port)
File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/uri_parser.py", line 269, in parse_uri
nodes = split_hosts(hosts, default_port=default_port)
File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/uri_parser.py", line 209, in split_hosts
nodes.append(parse_host(entity, port))
File "/var/lib/openshift/531b77fd500446980900010d/python/virtenv/lib/python2.7/site-packages/pymongo/uri_parser.py", line 137, in parse_host
raise ConfigurationError("Port number must be an integer.")
pymongo.errors.ConfigurationError: Port number must be an integer.
看起来OPENSHIFT_MONGODB_DB_PORT 没有设置
print OPENSHIFT_MONGODB_DB_PORT --> NameError: name 'OPENSHIFT_MONGODB_DB_PORT' is not defined
与OPENSHIFT_MONGODB_DB_HOST相同
我需要做什么来建立连接?
更新:
我可以通过来自rockmongo的硬编码信息直接通过客户端连接
client = MongoClient('mongodb://admin:password@[ip addr]:[port]/')
但是当我这样做时
client = MongoClient('mongodb:admin:password@%s:%s/' % os.environ['OPENSHIFT_MONGODB_DB_HOST'], os.environ['OPENSHIFT_MONGODB_DB_PORT']))
我明白了
[error] (<type 'exceptions.KeyError'>, KeyError('OPENSHIFT_MONGODB_DB_HOST',), <traceback object at 0x7f7bc8367248>)
【问题讨论】: