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
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.
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.