我在使用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。
答案 0 :(得分:0)
您可以使用cls
参数declarative_base
替换默认object
作为所有课程的基础:
Base = declarative_base(cls=MyBaseClass)
有关更多信息和选项,请参阅文档的Mixin and Custom Base Classes部分。