Python 如何使用pymongo连接远程mongodb

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/42718547/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-19 22:03:45  来源:igfitidea点击:

How to connect remote mongodb with pymongo

pythonmongodbpython-3.xsshpymongo

提问by Volodymyr Nazarenko

When I use MongoChef to connect remote mongo database, I use next parameters:

当我使用 MongoChef 连接远程 mongo 数据库时,我使用下一个参数:



Server

服务器

  • Server:localhost
  • Port:27017
  • 服务器:本地主机
  • 端口:27017

SSH Tunnel

SSH隧道

  • SSH address:10.1.0.90

  • Port:25

  • SSH Username:username

  • SSH Password:password

  • SSH 地址:10.1.0.90

  • 端口:25

  • SSH 用户用户名

  • SSH密码:密码



When I connect with Pymongo, I have the next code:

当我与 Pymongo 连接时,我有下一个代码:

import pymongo

MONGO_HOST = "10.1.0.90"
MONGO_PORT = 25
MONGO_DB = "db_name"
MONGO_USER = "username"
MONGO_PASS = "password"

con = pymongo.MongoClient(MONGO_HOST, MONGO_PORT)
db = con[MONGO_DB]
db.authenticate(MONGO_USER, MONGO_PASS)

print(db)

But I have the next error:

但我有下一个错误:

pymongo.errors.ServerSelectionTimeoutError: 10.1.2.84:27017: [Errno 111] Connection refused

Please, could you help me with this problem? What did I do wrong?

拜托,你能帮我解决这个问题吗?我做错了什么?

回答by Volodymyr Nazarenko

The solution which works for me.

对我有用的解决方案。

from sshtunnel import SSHTunnelForwarder
import pymongo
import pprint

MONGO_HOST = "REMOTE_IP_ADDRESS"
MONGO_DB = "DATABASE_NAME"
MONGO_USER = "LOGIN"
MONGO_PASS = "PASSWORD"

server = SSHTunnelForwarder(
    MONGO_HOST,
    ssh_username=MONGO_USER,
    ssh_password=MONGO_PASS,
    remote_bind_address=('127.0.0.1', 27017)
)

server.start()

client = pymongo.MongoClient('127.0.0.1', server.local_bind_port) # server.local_bind_port is assigned local port
db = client[MONGO_DB]
pprint.pprint(db.collection_names())

server.stop()

回答by Kshitij

This helped me to connect pymongo with mLab database in python :

这帮助我将 pymongo 与 python 中的 mLab 数据库连接:

from pymongo import MongoClient

MONGO_HOST = "ds123456.mlab.com"
MONGO_PORT = 23456
MONGO_DB = "db name"
MONGO_USER = "Username"
MONGO_PASS = "password"
connection = MongoClient(MONGO_HOST, MONGO_PORT)
db = connection[MONGO_DB]
db.authenticate(MONGO_USER, MONGO_PASS)