python - 尝试使用python连接到mongodb atlas时连接超时
问题描述
我正在尝试连接到我的 mongodb atlas 集群,但是一旦我尝试对我的数据库做某事,我就会一直超时。
我使用的数据库是在 mongoshell 中创建的,而且我在 mongodb compass 中检查了它们的存在
错误
pymongo.errors.ServerSelectionTimeoutError: projekt-shard-00-01-rk7ft.mongodb.net:27017: timed out,projekt-shard-00-00-rk7ft.mongodb.net:27017: timed out,projekt-shard-00-02-rk7ft.mongodb.net:27017: timed out
代码
client = MongoClient("""mongodb://user:password@projekt-shard-00-00-rk7ft.mongodb.net:27017,projekt-shard-00-01-rk7ft.mongodb.net:27017,projekt-shard-00-02-rk7ft.mongodb.net:27017/projekt?ssl=true&replicaSet=projekt-shard-0&authSource=admin""")
client.projekt.category.insert_one({type : "pants"}).inserted_id
解决方案
我有这个问题几个小时。奇怪的是,这似乎是一个连接问题,但它并没有抛出错误的身份验证或任何东西,只是这个超时。客户端对象似乎是实际创建的(我可以打印它的属性)。我一直在玩,这以某种方式起作用:
- 在 MongoDB GUI 中,导航到数据库访问
- 添加一个与设置时创建的初始用户具有相同读/写权限的测试用户
- 将Python中的连接字符串更改为新用户的用户名+密码
- 运行代码
对我来说,它终于成功连接并插入。在此之后,原始用户的连接字符串现在工作了,所以我删除了测试用户。
我无法确定此问题的根本原因,但似乎数据库用户表只需要对其执行某种操作来刷新并开始接受用户连接。