我正在编写一个小的SQLAlchemy包装器,用于从MySQL数据库导出数据并进行一些轻量级数据转换,主要是更改字段名称。我的当前脚本运行良好,但需要我基本上两次描述我的模型——一次在类声明中,一次作为要迭代的字段名称列表。
我正在尝试找出如何使用内省来识别行对象上的列访问器属性。以下代码几乎完美地解决了这个问题:
除了我的“一对多关系访问器”也是sqlalchemy.orm.attributes.InstrumentedAttribute的实例之外,我需要跳过它们。在检查类字典时有没有办法区分这两者?
我找到的大多数关于sqlalchemy内省的文档都涉及查看metadata.table,但由于我正在重命名列,因此该数据不是易于映射的。
我正在尝试找出如何使用内省来识别行对象上的列访问器属性。以下代码几乎完美地解决了这个问题:
for attr, value in self.__class__.__dict__.iteritems():
if isinstance(value, sqlalchemy.orm.attributes.InstrumentedAttribute):
self.__class__._columns.append(attr)
除了我的“一对多关系访问器”也是sqlalchemy.orm.attributes.InstrumentedAttribute的实例之外,我需要跳过它们。在检查类字典时有没有办法区分这两者?
我找到的大多数关于sqlalchemy内省的文档都涉及查看metadata.table,但由于我正在重命名列,因此该数据不是易于映射的。