各位, 我只是花了很长时间来查这个——我应该漏掉一些基本的东西。
我有一个python对象,我只想在mondodb中插入这个对象。
这就是我所拥有的:
from pymongo import Connection
import json
conn = Connection()
db = conn.cl_database
postings = db.postings_collection
class Posting(object):
def __init__(self, link, found=None, expired=None):
self.link = link
self.found = found
self.expired = expired
posting = Posting('objectlink1')
value = json.dumps(posting, default=lambda x:x.__dict__)
postings.insert(value)
引发此错误:
Traceback (most recent call last):
File "./mongotry.py", line 21, in <module>
postings.insert(value)
File "build/bdist.macosx-10.7-intel/egg/pymongo/collection.py", line 302, in insert
File "build/bdist.macosx-10.7-intel/egg/pymongo/database.py", line 252, in _fix_incoming
File "build/bdist.macosx-10.7-intel/egg/pymongo/son_manipulator.py", line 73, in transform_incoming
TypeError: 'str' object does not support item assignment
似乎是因为json.dumps()返回一个字符串。
现在,如果我在插入之前加载了一个值,它就可以正常工作了:
posting = Posting('objectlink1')
value = json.dumps(posting, default=lambda x:x.__dict__)
value = json.loads(value)
postings.insert(value)
最直接的办法是什么?
谢谢!
初始代码中的
value
是什么?它应该是
dict
而不是类实例这应该有效:
您误用了集合的insert方法。在此处查看:http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.insert
您需要插入的是一个文档。它应该是一个带有键和值的dict。简单地尝试插入字符串是不合适的。dumps返回json格式的字符串。如果您只是为了获取dict而转储它,则不需要json步骤。
准确插入文档的外观:
postings.insert({“key”:“value”})
或者直接将类实例转换为要存储为文档的dict,然后将其插入。它与json.dumps.loads()一起工作,因为这最终会给您一个指令
相关问题 更多 >
编程相关推荐