2017-03-29 9 views
1

URLからプルするJSONファイルをインポートして、pongongoモジュールを使用してmongoDBにそのまま送信しようとしています。文書が非空のリストである必要があります。pymongoを使用してJSONをmongoDBにインポートする

私はこれを実行するときに、次のコード

#!/usr/bin/env python 
import sys, urllib2, json, pymongo 
from pymongo import MongoClient 
myurl = "https://gist.githubusercontent.com/border/775526/raw/b921df18ba00262ab5bba8cadb3c178e1f7748f7/config.json" 
response = urllib2.urlopen(myurl) 
data = response.read() 
connection = MongoClient('mongodb://user:[email protected]:27017/database') 
connection.database_names() 
db = connection.database 
posts = db.posts 
post_id = posts.insert_many(data).inserted_id 

を持って、私はこのエラー 昇給の例外TypeError(「文書が非空のリストでなければならない」) TypeError例外を取得します

理想的には、このjsonファイルが毎週更新されるため、jsonをURLからプルしてmongoDBを更新できるのが理想です。 ありがとう

+0

まあ、コードをデバッグして、各変数が保持するデータと型のすべての段階を確認してください。 –

答えて

6

JSONをPythonオブジェクトに変換する必要があります。PythonオブジェクトはMongoDBに送信するためにBSONに変換されます。

from bson import json_util 
data = json_util.loads(response.read()) 

標準のPython json.loads()関数は、あまりにも、動作しますが、PyMongoのjson_util.loads()いくつかのMongoDB特有の処理:PythonオブジェクトにJSONを変換するにはPyMongoに付属の "bson.json_util" モジュールを使用詳細が良い。

関連する問題