python - 使用 Python (Pycharm) 在 mac 上连接到 MongoDB
问题描述
我正在尝试使用 Pycharm 在我的 Mac 上连接到 MongoDB。我既有 MongoDB 的 Atlas 帐户,也有一个虚拟机 (Linux)。我收到以下错误,我认为它与连接无关,而是与 Mac 上的 MongoDB 安装问题有关。我使用该代码并尝试通过“Mongo+srv URI”进行连接时收到以下错误。
我曾尝试在终端、MongoDB 社区等中使用 brew 安装不同版本的 MongoDB。如果有人有任何想法,那将是一个很大的帮助。
Mac OS Catalina,10.15.7。我目前安装了 Mongo shell:
MongoDB shell version v4.2.0
connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
Implicit session: session { "id" : UUID("6a310523-2d54-4f4a-b70c-697429ed25ef") }
MongoDB server version: 4.4.1
WARNING: shell and server versions do not match
import pymongo
from pymongo import MongoClient
import dns
client = MongoClient('192.168.56.30', 27017)
db = client.test_database
collection = db.test_collection
import datetime
post = {"author": "Mike",
"text": "My first blog post!",
"tags": ["mongodb", "python", "pymongo"],
"date": datetime.datetime.utcnow()}
posts = db.posts
post_id = posts.insert_one(post).inserted_id #after this, you get "statement seems to have no effect"
post_id
Traceback (most recent call last):
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/IPython/core/interactiveshell.py", line 3418, in run_code
exec(code_obj, self.user_global_ns, self.user_ns)
File "<ipython-input-11-caf04adc7485>", line 1, in <module>
post_id = posts.insert_one(post).inserted_id
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/collection.py", line 701, in insert_one
session=session),
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/collection.py", line 615, in _insert
bypass_doc_val, session)
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/collection.py", line 603, in _insert_one
acknowledged, _insert_command, session)
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1497, in _retryable_write
with self._tmp_session(session) as s:
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/contextlib.py", line 112, in __enter__
return next(self.gen)
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1829, in _tmp_session
s = self._ensure_session(session)
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1816, in _ensure_session
return self.__start_session(True, causal_consistency=False)
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1766, in __start_session
server_session = self._get_server_session()
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/mongo_client.py", line 1802, in _get_server_session
return self._topology.get_server_session()
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/topology.py", line 488, in get_server_session
None)
File "/Users/Graeme/Documents/NCI/Project/venv/lib/python3.7/site-packages/pymongo/topology.py", line 217, in _select_servers_loop
(self._error_message(selector), timeout, self.description))
pymongo.errors.ServerSelectionTimeoutError: 192.168.56.30:27017: timed out, Timeout: 30s, Topology Description: <TopologyDescription id: 5fc8ea820dbfa3f7af8ea3ac, topology_type: Single, servers: [<ServerDescription ('192.168.56.30', 27017) server_type: Unknown, rtt: None, error=NetworkTimeout('192.168.56.30:27017: timed out')>]>
```
解决方案
您需要确保为外部连接设置了 MongoDB(默认情况下不是)。
它可能涉及编辑您的 mongod.conf 文件并设置 bind_ip_all 标志。
请参阅https://docs.mongodb.com/manual/core/security-mongodb-configuration/
和https://docs.mongodb.com/manual/reference/configuration-options/
推荐阅读
- python - 列表中元组的交集 - python
- hyperledger-fabric - Hyperledger Fabric CA:http:来自 127.0.0.1:53356 的 TLS 握手错误:tls:收到长度为 21536 的超大记录
- vue.js - Vue flickr 应用程序中的搜索栏未提供预期结果
- javascript - 将任何 URL 转换为相对 URL
- meteor - 当我尝试运行 npm install 时 Meteor 抛出 gyp 错误
- c# - 使用 IdentityServer4 加载项目时 DefaultUserSession 中的 NullReferenceException
- powershell - 获取一个AD用户的经理并将其输入到表格的列中
- css - 使用 ::before 作为创造空间的方式的目的是什么?
- swift - Swift 不会在具有关联类型的协议扩展函数中调用重写的类 var
- c# - 构建项目 .Net 本机工具链启用导致内部编译器错误:已添加具有相同密钥的项目