我正在开发一个向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>")
任何人都有任何关于错误的想法?
答案 0 :(得分:3)
我会检查一些事情:
(1)为什么错误消息说系统正在尝试连接到localhost:27017 ......?
(2)为什么你的mongodb URI有真正的用户名和密码应该是“user”和“password”?
我的猜测是问题是(2)除非你为了这个帖子而模糊了用户名和密码。
如果您仍然无法发送电子邮件至support@mongolab.com,我们可以深入了解您。
- 将会
答案 1 :(得分:2)
我一般认为回答一个人自己的问题是不好的形式,但我想出了(相当简单的)答案并希望记录下来,以确保其他人也能得到它。
问题是未将host=
指定为connect
函数中的关键字参数。正确的函数调用将是:
from mongoengine import *
connect('tablename', host="mongodb://<user>:<password>@ds035617.mongolab.com:35617/<mydatabase>")
答案 2 :(得分:0)
看起来您正在使用MongoDB URI进行连接,但驱动程序将字符串解释为数据库名称并尝试连接到默认的localhost:27017。根据{{3}},您希望将该URI作为主机参数传递:
只要包含数据库名称,也支持Uri样式连接 - 只需提供uri作为connect()的主机:
connect('project1', host='mongodb://localhost/database_name')