mongodb-时间转化

from datetime import datetime, timedelta

 

# coding=utf-8



from datetime import datetime, timedelta
from flask_mongoengine import MongoEngine
from mongoengine import *


def mongo_to_dict(obj, exclude_fields):
    return_data = []

    if obj is None:
        return None

    if isinstance(obj, Document):
        return_data.append(("id", str(obj.id)))

    for field_name in obj._fields:

        if field_name in exclude_fields:
            continue

        if field_name in ("id",):
            continue

        data = obj._data[field_name]

        if isinstance(obj._fields[field_name], ListField):
            return_data.append((field_name, list_field_to_dict(data)))
        elif isinstance(obj._fields[field_name], EmbeddedDocumentField):
            return_data.append((field_name, mongo_to_dict(data, [])))
        elif isinstance(obj._fields[field_name], DictField):
            return_data.append((field_name, data))
        else:
            return_data.append((field_name, mongo_to_python_type(obj._fields[field_name], data)))

    return dict(return_data)


def list_field_to_dict(list_field):
    return_data = []

    for item in list_field:
        if isinstance(item, EmbeddedDocument):
            return_data.append(mongo_to_dict(item, []))
        else:
            return_data.append(mongo_to_python_type(item, item))

    return return_data


def mongo_to_python_type(field, data):
    if isinstance(field, DateTimeField):
        if data is not None:
            # return str(data.isoformat(''))
            print('DateTimeField:', str((data + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S")))
            return str((data + timedelta(hours=8)).strftime("%Y-%m-%d %H:%M:%S"))
        else:
            return None
    elif isinstance(field, ComplexDateTimeField):
        if data is not None:
            print('ComplexDateTimeField:', field.to_python(data + timedelta(hours=8)).isoformat())
            return field.to_python(data + timedelta(hours=8)).isoformat()
        else:
            return None
    elif isinstance(field, StringField):
        if isinstance(data, unicode):
            print("unicode")
            return str(data.encode('utf-8'))
        elif isinstance(data, str):
            print("str")
            return str(data)
        else:
            return str(data)
    elif isinstance(field, FloatField):
        return float(data)
    elif isinstance(field, IntField):
        return int(data)
    elif isinstance(field, BooleanField):
        return bool(data)
    elif isinstance(field, ObjectIdField):
        return str(data)
    elif isinstance(field, DecimalField):
        return data
    else:
        return str(data)


def convert_dict_list(query_list):

    new_datesets = []
    for dataset in query_list:
        dataset = dataset.to_dict()
        new_datesets.append(dataset)
    return new_datesets

 

 

 

 

 

 

 

  

posted @ 2019-02-26 15:02  Adamanter  阅读(585)  评论(0编辑  收藏  举报