psycopg2 クエリから返された有効な json である文字列を、pymongo 経由で mongo インスタンスに挿入できる json に変換するにはどうすればよいですか? いろいろ試しましたが、どれもうまくいきません。mongo への挿入で TypeError が発生し続けTypeError: 'str' object does not support item assignment
ます。
ちなみに、私はPython 2.7とpsycopg2 2.4.5、およびpymongo 2.1を使用しています。必要に応じてアップグレードできます。Ubuntu と apt-get を使用してデフォルトでインストールされたものを使用しました。
import psycopg2
import pymongo
from pymongo import Connection
import ast
import json
connection = Connection()
db = connection['af_reports_test']
psa = db['psa']
cur = con.cursor()
cur.execute("SELECT activity_json FROM \"edus\".\"ACTIVITIES\" WHERE status='PUBLISHED'")
results = cur.fetchall()
for rec in results:
for value in rec:
psa.insert(value)
データベースから返されるもののサンプルを次に示します。
{"activity":{"to":{"users":["someone","someoneElse"]}}}
また、トレースバックは次のとおりです。
Traceback (most recent call last):
File "getPSA.py", line 33, in <module>
psa.insert(activity)
File "/usr/lib/python2.7/dist-packages/pymongo/collection.py", line 300, in insert
docs = [self.__database._fix_incoming(doc, self) for doc in docs]
File "/usr/lib/python2.7/dist-packages/pymongo/database.py", line 252, in _fix_incoming
son = manipulator.transform_incoming(son, collection)
File "/usr/lib/python2.7/dist-packages/pymongo/son_manipulator.py", line 73, in transform_incoming
son["_id"] = ObjectId()
TypeError: 'str' object does not support item assignment