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