Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 8, 2011 08:43:06

alexlp
От:
Зарегистрирован: 2009-11-12
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

pymongo + datetime

Я делаю запрос в базу и получаю ответ содержавший datetime.datetime(), после ответ передается декоратору jsonify которому есс-но не нравится объект datetime().

Собственно, можно ли средствами pymongo до декоратора не перебирая список словарей и формируя словарь для декоратора сделать преобразования полей datetime()?
что то вроде
dc.users.find({},{'name': 1, somefunc('birth': 1) })



Офлайн

#2 Фев. 8, 2011 10:13:49

ziro
От:
Зарегистрирован: 2009-08-13
Сообщения: 225
Репутация: +  8  -
Профиль   Отправить e-mail  

pymongo + datetime

Средствами pymongo нельзя да и не надо. Надо средствами модуля json, типа такого (выдернуто из проекта)

try:
from cjson import dump as _dump, dumps as _dumps, load, loads
except ImportError:
from json import dump as _dump, dumps as _dumps, load, loads

def default_handler(obj):
"""
Функция представляет собой обработчик нестандартных типов для сериализации
данных в JSON фомат.

:param obj: сериализуемый объект;

В рамках поддержки конверсии XXX в JSON мы должны помимо
сериализуемых в JSON типов данных поддерживать также и несериализуемые типы
данных, типа :class:`datetime.datetime`.
"""
from datetime import datetime

if isinstance(obj, datetime):
return obj.strftime("%Y%m%dT%H:%M:%S")

return obj

def dump(*args, **kwargs):
"""
Функция сериализации данных в файл в JSON формате. Вызывает одноименную
функцию из стандартного модуля :mod:`json` или :mod:`cjson`, но устанавливает
:func:`default_handler` как обработчик нестандартных типов.
"""
return _dump(*args, default=default_handler, **kwargs)



Отредактировано (Фев. 8, 2011 10:14:45)

Офлайн

#3 Фев. 8, 2011 11:03:40

alexlp
От:
Зарегистрирован: 2009-11-12
Сообщения: 40
Репутация: +  0  -
Профиль   Отправить e-mail  

pymongo + datetime

Пасиба!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version