web-dev-qa-db-fra.com

importation de JSON dans mongoDB à l'aide de pymongo

j'essaie d'importer un fichier JSON que je extrait d'une URL et l'envoie à mongoDB tel quel, à l'aide du module pymongo.

J'ai le code suivant

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

en exécutant ceci, j'obtiens cette erreur raise TypeError ("les documents doivent être une liste non vide") TypeError: les documents doivent être une liste non vide

idéalement, je veux juste pouvoir extraire le json de l'URL et mettre à jour le mongoDB car ce fichier json sera mis à jour chaque semaine . Merci

5
joseph wallberg

Vous devez convertir les objets JSON en objets Python, que PyMongo convertira ensuite en BSON pour les envoyer à MongoDB. Pour convertir les objets JSON en objets Python, utilisez le module "bson.json_util" fourni avec PyMongo:

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

La fonction standard Python json.loads () fonctionne également, mais json_util.loads () de PyMongo gère mieux certains détails spécifiques à MongoDB.

13

Vous pouvez également utiliser la bibliothèque "demandes":

response = requests.get(myurl)
data = response.json()

et postez ces données dans la base de données.

0
Srujan Kumar