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 docsによると、そのURIをホストパラメーターとして渡したい:


データベース名を含める限り、Uri スタイルの接続もサポートされます。connect() のホストとして uri を指定するだけです。

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