2017-03-29 2 views
1

Ich versuche, eine JSON-Datei zu importieren, ich ziehe von einer URL und senden Sie es an MongoDB wie es ist, mit dem Pymongo-Modul.Importieren von JSON in mongoDB mit pymongo

Ich habe den folgenden Code

#!/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 

auf diese Ausführung, erhalte ich diesen Fehler raise Typeerror („Dokumente müssen eine nicht-leere Liste sein“) Typeerror: Dokumente müssen eine nicht-leere Liste sein

ideal, ich möchte nur in der Lage sein, die Json aus der URL zu ziehen und die MongoDB zu aktualisieren, wie diese JSON-Datei wird jede Woche aktualisiert werden. Danke

+0

Nun, haben Sie Ihren Code debugged, um in jeder Phase zu überprüfen, was jede Variable enthält, sowohl Daten als auch Typ? –

Antwort

6

Sie müssen JSON in Python-Objekte konvertieren, die PyMongo dann in BSON konvertieren wird, um sie an MongoDB zu senden. Um JSON zu Python-Objekte zu umwandeln verwenden die "bson.json_util" Modul mit PyMongo enthalten:

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

Die Standard-Python json.loads() Funktion funktioniert auch, aber PyMongo der json_util.loads() übernimmt einen Teil MongoDB spezifische Details besser.

Verwandte Themen