当前位置:  编程技术>python

sqlalchemy对象转dict的示例

    来源: 互联网  发布时间:2014-10-04

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

代码如下:

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 {}


    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • Flask SQLAlchemy一对一,一对多的使用方法实践
  • flask中使用SQLAlchemy进行辅助开发的代码
  • sql to sqlalchemy 转换的小例子
  • Python ORM框架SQLAlchemy学习笔记之安装和简单查询实例
  • Python的ORM框架SQLAlchemy入门教程
  • Python ORM框架SQLAlchemy学习笔记之关系映射实例
  • Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
  • Python SQLAlchemy基本操作和常用技巧(包含大量实例,非常好)
  • Python ORM框架SQLAlchemy学习笔记之数据添加和事务回滚介绍
  • Python ORM框架SQLAlchemy学习笔记之数据查询实例


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3