OpenShift Python mongoDB环境变量未设置/无法连接

 KLD受害者 发布于 2023-01-19 11:32

这是在我的应用程序文件头中:

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 "", line 1, in 
  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] (, KeyError('OPENSHIFT_MONGODB_DB_HOST',), )

asp.. 5

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))

您可以在此处参考示例。

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))
    

    您可以在此处参考示例。

    2023-01-19 11:33 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有