我正在尝试使用Pycharm连接到mac上的MongoDB。我有一个MongoDB的Atlas帐户,还有一个虚拟机(Linux)。我得到以下错误,我不认为这与连接有关,而是Mac上的MongoDB安装问题。我使用该代码并试图通过“Mongo+srv-URI”进行连接,得到下面的错误
我使用brew在终端、MongoDB社区等安装了不同版本的MongoDB。如果有人有任何想法,那将是一个很大的帮助
MacOSCatalina,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/
相关问题 更多 >
编程相关推荐