最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

sqlalchemy对象转dict的示例

来源:动视网 责编:小采 时间:2020-11-27 14:30:16
文档

sqlalchemy对象转dict的示例

sqlalchemy对象转dict的示例: 代码如下:def sa_obj_to_dict(obj, filtrate=None, rename=None): sqlalchemy 对象转为dict :param filtrate: 过滤的字段 :type filtrate: list or tuple :param rename: 需要改名的,改名在过滤之后处理, key为原
推荐度:
导读sqlalchemy对象转dict的示例: 代码如下:def sa_obj_to_dict(obj, filtrate=None, rename=None): sqlalchemy 对象转为dict :param filtrate: 过滤的字段 :type filtrate: list or tuple :param rename: 需要改名的,改名在过滤之后处理, key为原


代码如下:


def sa_obj_to_dict(obj, filtrate=None, rename=None):
"""
sqlalchemy 对象转为dict
:param filtrate: 过滤的字段
:type filtrate: list or tuple
:param rename: 需要改名的,改名在过滤之后处理, key为原来对象的属性名称,value为需要更改名称
:type rename: dict
:rtype: dict
"""

if isinstance(obj.__class__, DeclarativeMeta):
# an SQLAlchemy class
#该类的相关类型,即直接与间接父类
cla = obj.__class__.__mro__
#过滤不需要的父类
cla = filter(lambda c: hasattr(c, '__table__'), filter(lambda c: isinstance(c, DeclarativeMeta), cla))
columns = []
map(lambda c: columns.extend(c.__table__.columns), cla[::-1])
# columns = obj.__table__.columns
if filtrate and isinstance(filtrate, (list, tuple)):
fields = dict(map(lambda c: (c.name, getattr(obj, c.name)), filter(lambda c: not c.name in filtrate, columns)))
else:
fields = dict(map(lambda c: (c.name, getattr(obj, c.name)), columns))
# fields = dict([(c.name, getattr(obj, c.name)) for c in obj.__table__.columns])
if rename and isinstance(rename, dict):
#先移除key和value相同的项
_rename = dict(filter(lambda (k, v): str(k) != str(v), rename.iteritems()))
#如果原始key不存在,那么新的key对应的值默认为None
#如果新的key已存在于原始key中,那么原始key的值将被新的key的值覆盖
# map(lambda (k, v): fields.setdefault(v, fields.pop(k, None)), _rename.iteritems())
map(lambda (k, v): fields.update({v: fields.pop(k, None)}), _rename.iteritems())
#
return fields
else:
return {}

文档

sqlalchemy对象转dict的示例

sqlalchemy对象转dict的示例: 代码如下:def sa_obj_to_dict(obj, filtrate=None, rename=None): sqlalchemy 对象转为dict :param filtrate: 过滤的字段 :type filtrate: list or tuple :param rename: 需要改名的,改名在过滤之后处理, key为原
推荐度:
标签: 对象 字典 dict
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top