3

私がやろうとしているのは、SqlAlchemy エンティティ定義からすべての Column() を取得し、それらの型と制約を決定して、事前検証、データの変換、カスタム フォームのユーザーへの表示を可能にすることです。

どうすればそれを内省できますか?

例:

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)

このID、タイトル、生年月日を取得し、それらの制限を決定したい(タイトルが文字列で最大長が512、または生年月日が日時など)

ありがとうございました

4

1 に答える 1

7

を使用している場合はsqlalchemy 0.8、新機能の New Class Inspection Systemを確認してください。ドキュメントから抽出したサンプル コード:

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>]

それ以外の場合は、ドキュメントのAccessing Tables and Columnsの部分を参照してください。繰り返しますが、ドキュメントからコードを抽出します。

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
于 2012-07-04T15:13:03.687 に答える