0
實驗軟件sacred在沒有MongoDB的情況下運行,配置爲mongo-observer。當它試圖寫入MongoDB的設置,這個失敗,創建文件/tmp/sacred_mongo_fail__eErwU.pickle
,與消息如何導入pickle文件,如果神聖無法連接到MongoDB
Warning: saving to MongoDB failed! Stored experiment entry in /tmp/sacred_mongo_fail__eErwU.pickle
Traceback (most recent calls WITHOUT Sacred internals):
File "/usr/local/lib/python2.7/dist-packages/sacred/observers/mongo.py", line 127, in started_event
self.run_entry[experiment][sources] = self.save_sources(ex_info)
File "/usr/local/lib/python2.7/dist-packages/sacred/observers/mongo.py", line 239, in save_sources
file = self.fs.find_one({filename: abs_path, md5: md5})
File "/usr/local/lib/python2.7/dist-packages/gridfs/__init__.py", line 261, in find_one
for f in self.find(filter, *args, **kwargs):
File "/usr/local/lib/python2.7/dist-packages/gridfs/grid_file.py", line 658, in next
next_file = super(GridOutCursor, self).next()
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1114, in next
if len(self.__data) or self._refresh():
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 1036, in _refresh
self.__collation))
File "/usr/local/lib/python2.7/dist-packages/pymongo/cursor.py", line 873, in __send_message
**kwargs)
File "/usr/local/lib/python2.7/dist-packages/pymongo/mongo_client.py", line 888, in _send_message_with_response
server = topology.select_server(selector)
File "/usr/local/lib/python2.7/dist-packages/pymongo/topology.py", line 214, in select_server
address))
File "/usr/local/lib/python2.7/dist-packages/pymongo/topology.py", line 189, in select_servers
self._error_message(selector))
ServerSelectionTimeoutError: localhost:27017: [Errno 111] Connection refused
這怎麼泡菜文件手動導入到MongoDB的?
我覺得這個答案在正確的軌道上,但它並沒有爲我工作。對於初學者來說,我在pickle文件中的實驗已經有了'_id'字段,並且open命令需要'rb'參數在python3中以二進制形式打開......但即使如此,即使insert_one命令沒有返回一個錯誤,它並不實際更新數據庫中的(現有)記錄。有任何想法嗎? – clemej
@clemej:如果'_id'已經存在,你可以'find_one_and_update'。請參閱https://stackoverflow.com/a/46608956/1587329等。 –