如何继承SQLAlchemy类和自己的类

时间:2014-03-07 16:11:52

标签: python sqlalchemy multiple-inheritance

我在使用SQLAlchemy时遇到类继承问题。

以下分钟示例显示了我想要做的以及我的问题:

class Foo(object):
    bar = 'hello world'

class Car(Base, Foo):
    id = Column(Integer, primary_key=True)
    color = Column(String(50))

if __name__ == '__main__':
    # 'bar' attribute is available on new class instance
    my_car = Car()
    print my_car.bar # "hello world"

    # 'bar' attribute is not available on query init
    db_session = init_db()
    my_car = db_session.query(Car).first()
    print my_car.bar # Error

我有一个Car类,它继承自SQLAlchemy的Base类。除此之外,Car类继承自Foo类。在此示例中,Foo类只包含属性bar

当通过SQLAlchemy的查询函数实例化Car实例时,我无法访问bar属性。 SQLAlchemy如何实例化类,是否有针对我的解决方法?

我正在使用SQLAlchemy 0.7。

1 个答案:

答案 0 :(得分:0)

您可以使用cls参数declarative_base替换默认object作为所有课程的基础:

Base = declarative_base(cls=MyBaseClass)

有关更多信息和选项,请参阅文档的Mixin and Custom Base Classes部分。