首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何检索和打印pymongo.cursor.Cursor对象?

如何检索和打印pymongo.cursor.Cursor对象?
EN

Stack Overflow用户
提问于 2019-08-04 02:43:54
回答 3查看 2.1K关注 0票数 0

我正在使用python创建一个简单的数据库CRUD管理器,并将它连接到MongoDB数据库。在使用完全相同的方法之前,我已经连接到集群并检索了帖子。然而,这一次,当我尝试,它不起作用。

当我试图从集合中打印字典对象时,会出现错误。集合只包含一个带有{title:"book"}的对象,在下面的代码中,我检索了一个pymongo.cursor对象作为变量名"thedb“。

代码语言:javascript
复制
print(thedb)

会回来

代码语言:javascript
复制
<pymongo.cursor.Cursor object at 0x01175D10>

它有可能返回一个空字典,但我不知道测试它是否为空。

  1. 我已经尝试过设置SSL=True和证书。 client = pymongo.MongoClient(host,ssl=True,ssl_cert_reqs=ssl.CERT_NONE)

这对结果没有任何影响。

  1. 我也尝试过:
代码语言:javascript
复制
thedb = posts.find()

若要返回所有对象,则会产生相同的错误。

  1. 我也尝试过:
代码语言:javascript
复制
for a in thedb:
    print(a["title"])

它应该是一本字典,这样它就会返回"book“的值。

  1. 我还尝试在MongoDB中创建一个新的数据库和集合来连接。
代码语言:javascript
复制
import pymongo
import mongoengine

username = "username"
password = "password"
host = "mongodb+srv://"+username+":"+password+"@nameofmycluster-bfdug.mongodb.net/test?retryWrites=true&w=majority"
client = pymongo.MongoClient(host)
db = client.pymongo_test
# "pymongo_test" is the name of my database
mongoengine.connect('mongoengine_test', host=host)
posts = db.moreposts
# "moreposts" is the name of the collection in pymongo_test

thedb = posts.find({'title':"book"})
for a in thedb:
    print(a)
代码语言:javascript
复制
Traceback (most recent call last):
  File "C:/Users/J/Documents/Projects/Python/jobapplications/connectdb.py", line 128, in <module>
    main()
  File "C:/Users/J/Documents/Projects/Python/jobapplications/connectdb.py", line 102, in main
    for a in thedb:
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\cursor.py", line 1225, in next
    if len(self.__data) or self._refresh():
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\cursor.py", line 1117, in _refresh
    self.__session = self.__collection.database.client._ensure_session()
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\mongo_client.py", line 1598, in _ensure_session
    return self.__start_session(True, causal_consistency=False)
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\mongo_client.py", line 1551, in __start_session
    server_session = self._get_server_session()
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\mongo_client.py", line 1584, in _get_server_session
    return self._topology.get_server_session()
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\topology.py", line 434, in get_server_session
    None)
  File "C:\Users\J\AppData\Local\Programs\Python\Python36-32\lib\site-packages\pymongo\topology.py", line 200, in _select_servers_loop
    self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed

Process finished with exit code 1
EN

回答 3

Stack Overflow用户

发布于 2021-05-22 14:59:09

今天早上刚开始使用mongoDB,也遇到了同样的问题。我在找一个特定的值,找到了,但是得到了和你一样的结果。我刚说了"“就得到了结果。正如我所说的,我刚刚开始使用mongoDB,这就是为什么我不知道为什么。

这得到了我的结果: db.find({"key":"value"})

票数 1
EN

Stack Overflow用户

发布于 2019-08-04 14:01:55

我找不到解决方案,所以我试着用一个新集群创建一个新的MongoDB项目。最初的项目是使用AWS作为集群的云提供商和区域。这一次,我使用Azure作为新项目中新集群的云提供商和区域。

它现在正在工作,所以问题就在到数据库的连接中。我所做的就是建立一个新的数据库,所以实际上,原来的问题仍然存在于旧的数据库中。

票数 0
EN

Stack Overflow用户

发布于 2019-11-04 20:25:49

代码语言:javascript
复制
pymongo.errors.ServerSelectionTimeoutError: connection closed,connection closed,connection closed

每个集群有3个副本集节点。看上去你和他们中的任何一个都没有联系。在你的阿特拉斯网络界面上,转到你的Security > Network access settings,确保你的IP地址在那里被白化了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57343409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档