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を更新できるようにしたいだけです。ありがとう
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固有の詳細をより適切に処理します。
「リクエスト」ライブラリを使用することもできます。
response = requests.get(myurl)
data = response.json()
そのデータをデータベースに投稿します。