【发布时间】:2014-11-10 22:22:36
【问题描述】:
我正在使用 sqlalchemy 模块的 orm 功能来存储对象。这些对象是执行任意任务的自定义“任务”对象。在检索这些对象以供以后执行时,我使用基类进行检索。其他对象在创建并插入数据库时继承自此类。每个覆盖都是基类中起作用的部分。我们称其为功函数。不幸的是,检索后,我的对象执行基类工作函数而不是派生类。
看起来像这样:
class Parent():
def work(self):
print 'I am a parent'
class Child(Parent):
def work(self):
print 'I am a child'
sql alchemy session 生成是这样的:
from sqlalchemy import create_engine
engine = create_engine('mysql+mysqldb://root:@localhost:3306/mercury', pool_recycle=3600)
from sqlalchemy.orm import sessionmaker
session = sessionmaker()
session.configure(bind=engine)
到目前为止,我认为是正确的。插入和检索看起来像这样。
sess = session()
object = Child()
sess.add(Child)
result = sess.query(Parent).limit(1).one()
这似乎是失败的地方。
result.work()
I am a parent
我也在使用 mixin 来附加 orm 功能;此处未显示。
【问题讨论】:
标签: python inheritance orm sqlalchemy multiple-inheritance