我正在寻找一种方法来内省 SQLAlchemy ORM 类/实体,以确定实体属性的类型和其他约束(如最大长度)。
例如,如果我有一个声明性类:
class User(Base):
__tablename__ = "USER_TABLE"
id = sa.Column(sa.types.Integer, primary_key=True)
fullname = sa.Column(sa.types.String(100))
username = sa.Column(sa.types.String(20), nullable=False)
password = sa.Column(sa.types.String(20), nullable=False)
created_timestamp = sa.Column(sa.types.DateTime, nullable=False)
我希望能够发现 'fullname
' 字段应该是最大长度为 100 的字符串,并且可以为空。还有'created_timestamp
' 字段是 DateTime 并且不能为空。
就像是:
table = User.__table__
field = table.c["fullname"]
print "Type", field.type
print "Length", field.type.length
print "Nullable", field.nullable
EDIT:
即将推出的 0.8 版本有新的船级检查系统 http://www.sqlalchemy.org/trac/wiki/08Migration#NewClassInspectionSystem:
新的船级检查系统
状态:已完成,需要文档
许多 SQLAlchemy 用户正在编写需要这种能力的系统
检查映射类的属性,包括能够
获取主键列、对象关系、简单
属性等,通常用于构建
数据编组系统,例如 JSON/XML 转换方案等
课程形式库丰富。
原来Table和Column模型是原来检查的
点,有一个记录良好的系统。而 SQLAlchemy ORM
模型也是完全可自省的,这从来都不是一个完全的
稳定且受支持的功能,而用户往往没有明确的
了解如何获取此信息。
0.8 计划为此目的生成一致、稳定且完整记录的 API,这将提供一个检查系统
适用于类、实例,也可能适用于其他事物。尽管
该系统的许多要素已经可用,计划是
锁定 API,包括可从中获取的各种访问器
Mapper、InstanceState 和 MapperProperty 等对象:
(点击链接了解更多信息)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)