【问题标题】:OpenShift Python mongoDB environment variables not set / can't connectOpenShift Python mongoDB 环境变量未设置/无法连接
【发布时间】: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>)

【问题讨论】:

    标签: python mongodb openshift


    【解决方案1】:

    OpenShift 连接变量被定义为环境变量,它们不能作为普通 Python 变量访问。所以你给出的打印语句不起作用,以下应该;

    import os
    print os.environ['OPENSHIFT_MONGODB_DB_PORT']
    

    您应该将代码更改为;

    client = MongoClient('mongodb:%s:%s/' % (os.environ['OPENSHIFT_MONGODB_DB_HOST'], os.environ['OPENSHIFT_MONGODB_DB_PORT))
    

    你可以参考一个例子here

    【讨论】:

    • 我用尝试成功/问题详细信息更新了我的主要问题
    猜你喜欢
    • 1970-01-01
    • 2020-04-08
    • 1970-01-01
    • 2020-07-29
    • 2019-09-16
    • 2016-11-23
    • 1970-01-01
    • 2018-07-20
    • 2018-10-15
    相关资源
    最近更新 更多