Ill*_*huk 3 python sqlalchemy introspection
我想要做的是从SqlAlchemy实体定义获取它的所有列(),确定它们的类型和约束,以便能够预先验证,转换数据并向用户显示自定义表单.
我怎么能反省呢?
例:
class Person(Base):
'''
Represents Person
'''
__tablename__ = 'person'
# Columns
id = Column(String(8), primary_key=True, default=uid_gen)
title = Column(String(512), nullable=False)
birth_date = Column(DateTime, nullable=False)
Run Code Online (Sandbox Code Playgroud)
我想得到这个id,标题,出生日期,确定他们的限制(例如标题是字符串,最大长度是512或birth_date是日期时间等)
谢谢
如果您正在使用sqlalchemy 0.8,那么您应该查看新功能新类检查系统.文档中的示例代码摘录:
class User(Base):
__tablename__ = 'user'
id = Column(Integer, primary_key=True)
name = Column(String)
name_syn = synonym(name)
addresses = relationship(Address)
# universal entry point is inspect()
>>> b = inspect(User)
# column collection
>>> b.columns
[<id column>, <name column>]
Run Code Online (Sandbox Code Playgroud)
否则,请参阅文档的" 访问表和列"部分.同样,来自文档的代码提取:
employees = Table(...)
# or if using declarative
#employees = Employee.__table__
# or just
employees.c.employee_id
# via string
employees.c['employee_id']
# iterate through all columns
for c in employees.c:
print c
# access a column's name, type, nullable, primary key, foreign key
employees.c.employee_id.name
employees.c.employee_id.type
employees.c.employee_id.nullable
employees.c.employee_id.primary_key
employees.c.employee_dept.foreign_keys
Run Code Online (Sandbox Code Playgroud)