在mongodb中插入python对象 [英] Insert python object in mongodb

查看:37
本文介绍了在mongodb中插入python对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

伙计们, 我只是花了很多时间试图进行查找-我应该缺少一些基本知识.

Folks, I just spent a good amount of time trying to look this up -- I ought to be missing something basic.

我有一个python对象,我要做的就是将此对象插入mondodb中.

I have a python object, all I want to do is to insert this object in 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()返回一个字符串.

Seems like it is because json.dumps() returns a string.

现在,如果我在插入值之前确实加载了该值,则效果很好:

Now if I do do a loads of the value before inserting it works fine:

posting = Posting('objectlink1')
value = json.dumps(posting, default=lambda x:x.__dict__)
value = json.loads(value)
postings.insert(value)

最直接的方法是什么?

谢谢!

推荐答案

初始代码中的value是什么?

What is value in your initial code?

应该是dict而不是类实例

这应该有效:

postings.insert(posting.__dict__)

这篇关于在mongodb中插入python对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆