1

我正在开发一个向 Mongolab 提交数据的 Python 程序,我遇到了一个奇怪的异常:

mongoengine.connection.ConnectionError: Cannot connect to database mongodb://<user>:
<password>@ds035617.mongolab.com:35617/<mydatabase>:
could not connect to localhost:27017: [Errno 10061] No connection could be made
because the target machine actively refused it

这是有问题的代码:

from mongoengine import *
connect('tablename', "mongodb://<user>:<password>@ds035617.mongolab.com:35617/<mydatabase>")

任何人对什么是错的有任何想法?

4

3 回答 3

3

我会检查几件事:

(1) 为什么报错信息说系统正在尝试连接localhost:27017...?

(2)为什么你的mongodb URI有“用户”和“密码”,真正的用户名和密码应该是?

我的猜测是问题是(2),除非您为了发帖而隐藏用户名和密码。

如果您仍然遇到问题,请发送电子邮件至 support@mongolab.com,我们可以与您一起深入挖掘。

-将要

于 2012-08-10T07:07:44.857 回答
2

我通常认为回答自己的问题是一种糟糕的形式,但我想出了(相当简单的)答案,并想记录下来以确保其他人也能得到它。

问题不是host=在函数中指定为关键字参数connect。正确的函数调用是:

from mongoengine import *
connect('tablename', host="mongodb://<user>:<password>@ds035617.mongolab.com:35617/<mydatabase>")
于 2012-08-11T20:28:32.947 回答
0

看起来您正在使用MongoDB URI进行连接,但驱动程序将字符串解释为数据库名称并尝试连接到默认 localhost:27017。根据mongoengine 文档,您希望将该 URI 作为主机参数传递:


只要您包含数据库名称,也支持 Uri 样式连接 - 只需将 uri 作为主机提供给 connect():

connect('project1', host='mongodb://localhost/database_name')
于 2012-08-11T20:02:34.123 回答