[英]OpenShift Python mongoDB environment variables not set / can't connect
This is in my application file head: 这是在我的应用程序文件头中:
import os
import sys
from cgi import parse_qs, escape
import pymongo
from pymongo import MongoClient
I have the mongoDB 2.4 gear installed, and am trying to connect via 我已经安装了mongoDB 2.4齿轮,并且正在尝试通过
client = MongoClient('mongodb:$OPENSHIFT_MONGODB_DB_HOST:$OPENSHIFT_MONGODB_DB_PORT/')
I get the errors: 我得到了错误:
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.
looks like OPENSHIFT_MONGODB_DB_PORT
isn't set 好像未设置
OPENSHIFT_MONGODB_DB_PORT
print OPENSHIFT_MONGODB_DB_PORT --> NameError: name 'OPENSHIFT_MONGODB_DB_PORT' is not defined
Same with OPENSHIFT_MONGODB_DB_HOST
与
OPENSHIFT_MONGODB_DB_HOST
相同
What would I need to do, to set up a connection? 建立连接我需要做什么?
Update: 更新:
I was able to connect directly via client by hardcoding info from rockmongo 我可以通过硬编码来自rockmongo的信息直接通过客户端连接
client = MongoClient('mongodb://admin:password@[ip addr]:[port]/')
but when I do 但是当我这样做
client = MongoClient('mongodb:admin:password@%s:%s/' % os.environ['OPENSHIFT_MONGODB_DB_HOST'], os.environ['OPENSHIFT_MONGODB_DB_PORT']))
I get 我懂了
[error] (<type 'exceptions.KeyError'>, KeyError('OPENSHIFT_MONGODB_DB_HOST',), <traceback object at 0x7f7bc8367248>)
The OpenShift connection variables are defined as environment variables, they cannot be accessed as normal Python variables. OpenShift连接变量定义为环境变量,不能作为常规Python变量进行访问。 So the print statement you gave does not work, the following should;
因此,您提供的打印语句不起作用,以下应;
import os
print os.environ['OPENSHIFT_MONGODB_DB_PORT']
You should change your code to; 您应该将代码更改为;
client = MongoClient('mongodb:%s:%s/' % (os.environ['OPENSHIFT_MONGODB_DB_HOST'], os.environ['OPENSHIFT_MONGODB_DB_PORT))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.