sqlalchemy对象转dict的示例
发布时间:2022-08-24 00:08:34
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 {}
猜你喜欢
- 最近在使用echarts做报表需求,二次生成报表时数据合并,无法正确显示。第一次渲染:第二次渲染:可以看到这里的echarts项的serie
- 我就废话不多说了,大家还是直接看代码吧~clf=KMeans(n_clusters=5) #创建分类器对象fit_clf=clf.fit(X
- 本周的PyCoder's Weekly 上分享了一篇小文章,它里面提到的冷知识很有意思,我稍作补充,分享给大家。它提到的部分问题,读
- 在使用tp5时候把它部署到服务器上发现一个奇葩的事情,就是它默认访问config配置的默认页,无论怎么跳转到其他接口都不好使,最终重写了&n
- 本文性别判断主要依靠airtest中的自动化测试实现通过自动对比支付宝页面男女图像,从而实现男女判断代码如下:男女判断函数:// An hi
- 在使用SQL Server 的过程,中由于经常需要从多个不同地点将数据集中起来或向多个地点复制数据,所以数据的导出,导入是极为常见的操作.我
- pycharm中光标变粗,如下:原因:光标进入了改写状态。解决方法:按一下键盘中的Insert键就好了。
- css的流行导致了标签的流行,很直观,看起来很清爽。流行的一部分,还有很多种功能强大且美观的导航。。。1. Change.org2. N.D
- 这篇文章主要介绍了python爬虫 正则表达式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可
- 使用Python实现Word文档的自动化处理,包括批量生成Word文档、在Word文档中批量进行查找和替换、将Word文档批量转换成PDF等
- 因为主键可以唯一标识某一行记录,所以可以确保执行数据更新、删除的时候不会出现张冠李戴的错误。当然,其它字段可以辅助我们在执行这些操作时消除共
- 本文介绍基于Python中gdal模块,实现对大量栅格图像批量绘制直方图的方法。首先,明确一下本文需要实现的需求:现需对多幅栅格数据文件进行
- i前端:nput_test.html<!DOCTYPE html><html><head lang="
- 我想很多人都知道,在oracle里面,存储过程里面可以传入数组(如int[]),也就是说,可以传多条记录到数据,从而一起更新。减少数据库的请
- 本教程为大家分享了oracle 11g r2安装教程,供大家参考,具体内容如下一、环境脚本简单配置#!/bin/bashmv /etc/yu
- 利用百度 AI 开发平台的 OCR 文字识别 API 识别并提取图片中的文字。首先需注册获取 API 调用的 ID 和 key,步骤如下:打
- #!/usr/bin/env python # coding=utf-8 #--------------------------------
- *****看一下我定义的change()和run()函数******绘图坐标体系:作用:设置主窗体的大小和位置turtle.setup(wi
- 本文实例为大家分享了python接入微信聊天机器人的具体代码,供大家参考,具体内容如下1.安装库wxpy:pip install -U wx
- 问题查看 tensorflow api manual 时,看到关于 variable.read_value() 的注解如图:那么在 tens