sqlalchemy.ext.declarative.api.DeclarativeMeta转json
来源:互联网 发布:手机音乐闪光灯软件 编辑:程序博客网 时间:2024/06/07 06:27
原文链接: sqlalchemy.ext.declarative.api.DeclarativeMeta转json
from sqlalchemy.ext.declarative import DeclarativeMetafrom datetime import datetimeimport jsonclass AlchemyEncoder(json.JSONEncoder): _visited_objs = [] def default(self, obj): if isinstance(obj.__class__, DeclarativeMeta): # don't re-visit self if obj in AlchemyEncoder._visited_objs: return None AlchemyEncoder._visited_objs.append(obj) # an SQLAlchemy class fields = {} for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']: data = obj.__getattribute__(field) try: if isinstance(data, datetime): data=data.strftime('%Y-%m-%d %H:%M:%S') json.dumps(data) # this will fail on non-encodable values, like other classes fields[field] = data except TypeError: fields[field] = None return fields return json.JSONEncoder.default(self, obj)def new_alchemy_encoder(): _visited_objs = [] class AlchemyEncoder(json.JSONEncoder): def default(self, obj): if isinstance(obj.__class__, DeclarativeMeta): # don't re-visit self if obj in _visited_objs: return None _visited_objs.append(obj) # an SQLAlchemy class fields = {} for field in [x for x in dir(obj) if not x.startswith('_') and x != 'metadata']: data = obj.__getattribute__(field) try: if isinstance(data, datetime): data=data.strftime('%Y-%m-%d %H:%M:%S') json.dumps(data) # this will fail on non-encodable values, like other classes fields[field] = data except TypeError: fields[field] = None return fields return json.JSONEncoder.default(self, obj) return AlchemyEncoder
使用
print(json.dumps(table, cls=new_alchemy_encoder(), check_circular=False))
或者
print(json.dumps(table, cls=AlchemyEncoder, check_circular=False))
table为query返回值(DeclarativeMeta类型)
0 0
- sqlalchemy.ext.declarative.api.DeclarativeMeta转json
- sqlalchemy.ext.declarative.api.DeclarativeMeta转dict
- python sqlalchemy结果集转JSON
- ext json
- Ext-Api
- EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate
- EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate
- [转载]EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate
- EXT核心API详解(六)--Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate
- EXT核心API详解(七)-Ext.KeyNav/KeyMap/JSON/Format/DelayedTask/TaskRunner/TextMetrics/XTemplate
- EXT核心API详解(七)-Ext.KeyNav / KeyMap / JSON / Format / DelayedTask / TaskRunner / TextMetrics / XTemplate
- Ext.grid.GridPanel数据转json
- Ext 核心 API -- Ext.getCmp
- python玩转SQLAlchemy
- sqlalchemy
- SQLAlchemy
- sqlAlchemy
- sqlalchemy
- poj1364King_差分约束系统
- 页面输出换行的问题
- 解决Empty paragraph passed to 和warning: directory not found for option 的警告
- 红宝书 第18章整理——XML入门
- java正则匹配
- sqlalchemy.ext.declarative.api.DeclarativeMeta转json
- 欢迎使用CSDN-markdown编辑器
- Circular view path [faults]: would dispatch back to the current handler URL [/pulsar/faults] again
- PHP7.1安装yaf扩展
- typedef 的用法总结
- 自学之路
- 如何做好项目管理任务分配
- 项目架构数据存储的选择
- 20170426