无法查询pymongo unicode数据库名称

时间:2017-08-07 18:23:49

标签: python mongodb pymongo

我有一个填充了多个数据库的MongoDB服务器。这些数据库都包含在我对某些数据集进行的一些计算的聚合中使用的数据。这些数据库都是在Python 3中创建的。大部分数据都是由我的工具的客户端检索的,也在python3中,并且工作正常,查询没有问题。但是,当我尝试从单独的服务器访问特定数据库时遇到问题,而安装了python2.7(我无法控制)。当我打印数据库名称以查看它们的外观时,我会得到类似的结果:

>>> print(client.database_names())
[u'A', u'B', u'C', u'D', u'E']

注意:它们只在安装了python2.7的服务器上以这种方式显示。

让我们说我正在寻找数据库的内容,我知道自从我使用python3从我的服务器检查后就填充了这些内容。无论我尝试什么,它似乎都不想按名称提取正确的数据库。这就是我尝试过的:

>>>db = client[unicode('B')]
>>>print (db.collection_names())
[]

>>>db = client[u'B']
>>>print (db.collection_names())
[]

>>>db = client['B']
>>>print (db.collection_names())
[]

尝试2

# Python 2.7 pymongo test script
import pymongo
ip_address = "some ip address"

client = pymongo.MongoClient(ip_address)
db_names = client.database_names()

for i in range(len(db_names)):
    if (unicode('B') == db_names[i]):
        print ('foo')
        db = client[db_names[i]]
        break

print (db.collection_names())
##
## OUTPUT

## foo
## []

我不知道如何克服这个问题。是写入数据库的东西吗?任何帮助将不胜感激,谢谢。

修改

我做了一些挖掘,发现问题肯定是使用两个不同版本的Python的结果。我还没有想出解决方案。

1 个答案:

答案 0 :(得分:-1)

确保您的用户拥有所有必需的权限,这是一个典型的权限问题。