SQLAlchemy内省

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是日期时间等)

谢谢

van*_*van 6

如果您正在使用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)