2017-09-15 17 views
0

私はsymfonyプロジェクト(doctrineを使用)でデータベースを作成するためにクローラ(私はPythonを選択します)を実行する必要があります。 クローラは完了しましたが、データベースを埋めようとすると機能しません...PythonでMongoデータベースに接続

私はdb(mtdbdd)に新しいテーブルテストを作成します。 。私はこのコードを記入してみてください:

from pymongo import MongoClient 

MONGO_URI = 'mongodb://root:[email protected]:8889' 

client = MongoClient(connect=False) 
client = MongoClient(MONGO_URI) 
db = client.mtdbdd 
coll = db.test 

try: 
    result = coll.insert_one({"title": "test"}) 
except coll.errors.OperationFailure as e: 
    print e.code 
    print e.details 

しかし、私はエラーがあります:

pymongo.errors.ServerSelectionTimeoutError: Got opcode 3945 but expected 1 

いくつかのいずれかが私を助けることができるの?みんなありがとう !

+0

あなたはMongoDBを始めるのですか? MongoBのデフォルトポートは通常27017なので、どうしてあなたが8888 – MrE

+0

の2行をMongoClient(MONGO_URI、connect = False)に変更しますか – eLRuLL

+0

@MrEこのポートを使用しています。データベースがこのポートにあるため、私は? (私はMacでMampを使用しています) –

答えて

0

は今、私はこのスクリプトを実行します。

import pymongo 
from pymongo import MongoClient 

MONGO_URI = "mongodb://root:[email protected]:8889/mtdbdd" 

client = MongoClient(MONGO_URI) 
db = client.mtdbdd 
collection = db.land 
post = {"title": "test"} 

try: 
    post_id = collection.insert_one(post) 
except collection.errors.OperationFailure as e: 
    print e.code 
    print e.details 

しかしラインから来るエラー:

post_id = collection.insert_one(post) 
+0

あなたのmongodbにauth(セキュリティ)が有効になっていますか? 手動でmongouriを手動で有効にしない場合は、 "mongodb:// localhost:8889"または "mongodb://127.0.0.1:8889" のコードを 'post_id = collection.insert_one(post) ''coz pymongoはmongodbに接続できません。また、mongodインスタンスが実行されていることを再度確認してください。 'mongod.conf'ファイルを投稿してください:) –

+0

一方、認証が有効になっていると、SSLも有効になっている可能性があります。 'ssl = True'と' ssl_cert_reqs = ssl.CERT_NONE'は 'MongoClient()'の構築に役立ちます。 'ssl_cert_reqs = ssl.CERT_NONE'は、証明書が自己署名されており、チェックされるべきでない場合に限ります。私が覚えている限り、クライアントでSSLを有効にしていないとき(私のSSL保護されたサーバー用)、 'pymongo'からタイムアウトエラーが発生しました。 – Aufziehvogel

関連する問題