我在连接Atlas MongoDB中设置的数据库时遇到问题。 我已经阅读了多个其他问题,但没有答案使我的连接工作。 我想指出的是,我正试图通过一家公司的代理访问它(如果这与此有关的话)。 我的代码如下,仅在最后一行尝试计数文档时失败:
from pymongo import MongoClient
client = MongoClient(
"mongodb+srv://name:pass@iliastrialcluster-1tl2y.azure.mongodb.net/test?retryWrites=true&w=majority&ssl=true&ssl_cert_reqs=CERT_NONE"
)
db = client.get_database('sample_airbnb')
print(db)
listings_and_reviews = db.listingAndReviews
print(listings_and_reviews)
listings_and_reviews.count_documents({})
我得到的错误是:
Traceback (most recent call last):
File "C:~/mongo_connection1.py", line 11, in <module>
listings_and_reviews.count_documents({})
File "C:~\lib\site-packages\pymongo\collection.py", line 1721, in count_documents
_cmd, self._read_preference_for(session), session)
File "C:~\lib\site-packages\pymongo\mongo_client.py", line 1454, in _retryable_read
read_pref, session, address=address)
File "C:~\lib\site-packages\pymongo\mongo_client.py", line 1253, in _select_server
server = topology.select_server(server_selector)
File "C:~\lib\site-packages\pymongo\topology.py", line 235, in select_server
address))
File "C:~\lib\site-packages\pymongo\topology.py", line 193, in select_servers
selector, server_timeout, address)
File "C:~\lib\site-packages\pymongo\topology.py", line 209, in _select_servers_loop
self._error_message(selector))
pymongo.errors.ServerSelectionTimeoutError: iliastrialcluster-shard-00-00-1tl2y.azure.mongodb.net:27017: timed out,iliastrialcluster-shard-00-02-1tl2y.azure.mongodb.net:27017: timed out,iliastrialcluster-shard-00-01-1tl2y.azure.mongodb.net:27017: timed out
服务器选择超时错误是客户端告诉您无法连接到服务器的方式。在使用MongoDB Atlas时,这些错误的主要原因是无法启用客户端运行的节点的access for the IP address
要验证,请尝试使用相同的连接字符串使用MongoDB shell
mongo
进行连接。如果连接失败,那么就知道这不是Python的问题。顺便说一句,你的客户端代码看起来不错,所以我很确定这就是它到服务器的连接是延迟评估的,因此在您发出实际请求之前,我们不会尝试启动连接。在本例中,
count_documents
调用。这就是为什么这是生成错误的调用@JoeDrumgoole谢谢你的回答。问题归根结底是代理,停用代理后,连接工作正常。很高兴知道到服务器的连接是延迟评估的
相关问题 更多 >
编程相关推荐