首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用示例代码时Pymongo pymongo.errors.ServerSelectionTimeoutError

使用示例代码时Pymongo pymongo.errors.ServerSelectionTimeoutError
EN

Stack Overflow用户
提问于 2019-11-05 16:52:48
回答 2查看 6.6K关注 0票数 2

我正在尝试运行非常简单的代码,以找出如何在MongoDB阿特拉斯云中使用pymongo。

下面是示例代码

代码语言:javascript
复制
import pymongo

client = pymongo.MongoClient("mongodb+srv://{myusername}:{mypassword}@cluster0-uywu8.mongodb.net/test?retryWrites=true&w=majority")
db = client.BroadwayMatch
print(db)
collection = db.Artists
print(collection)

print(collection.insert_one({'x': 1}))

BroadwayMatch和艺术家是我上周能够插入的现有数据库和集合,我不知道发生了什么变化。它似乎成功地连接到数据库和集合,但由于某种原因无法对其进行读写。可以访问集合的所有属性,但所有方法都会产生ServerSelectionTimeoutError。下面是这个片段的输出

代码语言:javascript
复制
Database(MongoClient(host=['cluster0-shard-00-01-uywu8.mongodb.net:27017', 'cluster0-shard-00-00-uywu8.mongodb.net:27017', 'cluster0-shard-00-02-uywu8.mongodb.net:27017'], document_class=dict, tz_aware=False, connect=True, authsource='admin', replicaset='Cluster0-shard-0', ssl=True, retrywrites=True, w='majority'), 'BroadwayMatch')
Collection(Database(MongoClient(host=['cluster0-shard-00-01-uywu8.mongodb.net:27017', 'cluster0-shard-00-00-uywu8.mongodb.net:27017', 'cluster0-shard-00-02-uywu8.mongodb.net:27017'], document_class=dict, tz_aware=False, connect=True, authsource='admin', replicaset='Cluster0-shard-0', ssl=True, retrywrites=True, w='majority'), 'BroadwayMatch'), 'Artists')
Traceback (most recent call last):
  File "C:\Python37\Spotify-Match\mongotest.py", line 10, in <module>
    print(collection.insert_one({'x': 1}))
  File "C:\Python37\lib\site-packages\pymongo\collection.py", line 700, in insert_one
    session=session),
  File "C:\Python37\lib\site-packages\pymongo\collection.py", line 614, in _insert
    bypass_doc_val, session)
  File "C:\Python37\lib\site-packages\pymongo\collection.py", line 602, in _insert_one
    acknowledged, _insert_command, session)
  File "C:\Python37\lib\site-packages\pymongo\mongo_client.py", line 1279, in _retryable_write
    with self._tmp_session(session) as s:
  File "C:\Python37\lib\contextlib.py", line 112, in __enter__
    return next(self.gen)
  File "C:\Python37\lib\site-packages\pymongo\mongo_client.py", line 1611, in _tmp_session
    s = self._ensure_session(session)
  File "C:\Python37\lib\site-packages\pymongo\mongo_client.py", line 1598, in _ensure_session
    return self.__start_session(True, causal_consistency=False)
  File "C:\Python37\lib\site-packages\pymongo\mongo_client.py", line 1551, in __start_session
    server_session = self._get_server_session()
  File "C:\Python37\lib\site-packages\pymongo\mongo_client.py", line 1584, in _get_server_session
    return self._topology.get_server_session()
  File "C:\Python37\lib\site-packages\pymongo\topology.py", line 434, in get_server_session
    None)
  File "C:\Python37\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

我不知道我做错了什么,有人能帮忙吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-06 12:39:17

您可能无法连接到Atlas服务器的原因:

  • 您的白名单没有启用当前的IP地址。
  • 您使用的用户名和/或密码错误。在您的示例中,您的fString在开始时似乎缺少一个f。

在诊断这些情况时,剪切和粘贴用于MongoDB外壳或MongoDB罗盘的MongoDB Atlas连接字符串(参见下文)经常会暴露用户名和/或密码错误。

票数 3
EN

Stack Overflow用户

发布于 2019-11-05 17:05:27

或者您的mongo服务器没有公开,否则它不在默认端口中。尝试以下几个方面:

代码语言:javascript
复制
import pymongo
client = pymongo.MongoClient("mongodb://uname:pass@ip:port/")
db = client['BroadwayMatch']
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58715984

复制
相关文章

相似问题

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