web-dev-qa-db-ja.com

pymongoを使用してJSONをmongoDBにインポートする

pymongoモジュールを使用して、URLからプルした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ファイルは毎週更新されるため、URLからjsonをプルしてmongoDBを更新できるようにしたいだけです。ありがとう

6
joseph wallberg

JSONをPythonオブジェクトに変換する必要があります。PyMongoは、MongoDBに送信するためにBSONに変換します。JSONをPythonオブジェクトに変換するには、「bson。 PyMongoに含まれるjson_util "モジュール:

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

標準のPython json.loads()関数も機能しますが、PyMongoのjson_util.loads()は一部のMongoDB固有の詳細をより適切に処理します。

19

「リクエスト」ライブラリを使用することもできます。

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

そのデータをデータベースに投稿します。

0
Srujan Kumar