SQLAlchemy中的多态继承与反射

时间:2012-08-02 22:52:12

标签: sqlalchemy

我有两个表,模式看起来像这样:

Table Auth:
 id: Integer, PrimaryKey
 type: String

Table Password_auth
 id: Integer, PrimaryKey, ForeignKey(Auth.id)
 password: String

我在SQLAlchemy中使用join继承来表示它们的类中的上述两个表。我使用类型作为多态性的鉴别器。只要我不使用反射,这一切都很好。一旦我使用反射,所有地狱都会崩溃。

可以在SQLAlchemy中使用带有反射的多态连接继承吗?如果是这样的话,有人会在给我一个如何完成它的例子吗?

提前致谢。

1 个答案:

答案 0 :(得分:2)

假设您使用的是declarative extension,下面的代码应该会给您一个想法:

class Auth(Base):
    __table__ = Table('Auth', Base.metadata,
            autoload=True,
            autoload_with=engine)
    __mapper_args__ = {
            'polymorphic_on': 'type', 
            'polymorphic_identity': 'auth',
            }

class Password_Auth(Auth):
    __table__ = Table('Password_Auth', Base.metadata,
            autoload=True,
            autoload_with=engine)
    __mapper_args__ = {
            'polymorphic_identity': 'password_auth',
            }