Вставить объект python в mongodb

Люди, я просто потратил много времени, пытаясь понять это – я должен упустить что-то основное.

У меня есть объект 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) 

Что наиболее прямолинейно для этого?

Благодаря!

2 Solutions collect form web for “Вставить объект python в mongodb”

Какова value исходного кода?

Это должен быть не экземпляр класса dict

Это должно работать:

 postings.insert(posting.__dict__) 

Вы неправильно используете метод вставки для коллекции. Просмотрите здесь: http://api.mongodb.org/python/current/api/pymongo/collection.html#pymongo.collection.Collection.insert

То, что вам нужно вставить, – это документ. Это должен быть ключ с ключами и значениями. Просто попытка вставить строку не подходит. json.dumps возвращает строку в формате json. Если вы просто сбрасываете его, чтобы получить dict, то шаг json не нужен.

Вставьте именно то, как должны выглядеть ваши документы:

postings.insert ({ "ключ": "значение"})

Или конвертируйте экземпляр класса непосредственно в dict, который хотите сохранить в качестве документа, а затем вставьте его. Он работает с вашим json.dumps.loads (), потому что это в конечном итоге дает вам диктовку.

  • Mongoengine очень медленный на больших документах, объединенных с использованием родного пимонго
  • Получить массив строк из запроса Pymongo
  • Пользовательская система хранения для GridFS (MongoDB)?
  • Быстрое или массовое увеличение в пимонго
  • Попробуйте установить mongodb с dijango?
  • Python: создание кеша LRU
  • Добавить элемент в массив документов MongoDB в PyMongo без повторной установки
  • Структура папок для Python Django-REST-framework и Angularjs
  •  
    Interesting Posts for Van-Lav

    Zope.Schema / Plone – Как установить значение поля Datetime в функции updateWidget?

    SciPy build / install Mac Osx

    Потоковая оболочка вокруг программы, которая записывает в несколько выходных файлов

    Тестирование декораторов Python?

    Как установить значение по умолчанию для WTForms SelectField?

    Как быстро вычислить порядок локализации всех пересечений набора множеств

    Flask-admin, редактирование отношений, дающих мне объектное представление объекта Foreign Key

    Python – ввод пользователя для имени переменной, передаваемой в качестве аргумента функции

    Производительность кода Python уменьшается с потоками

    Поля пользовательской модели Django: to_python () не вызывается

    Добавить полярные оси к картезианскому сюжету в Matplotlib

    Массовая анимация Matplotlib

    Как выравнивать масштабы оси x и оси y в Python matplotlib?

    Используйте ConfigParser для чтения массива из ini-файла

    Python Unit Testing с двумя макетными объектами, как проверить порядок звонков?

    Python - лучший язык программирования в мире.