我遇到了python SQLAlchemy單表繼承的問題。SQLAlchemy單表繼承清除錯誤
型號:
class User(Base):
__tablename__ = 'user'
userID = Column(String(64), primary_key=True)
name = Column(String(64))
type = Column('type', String(50))
__mapper_args__ = {'polymorphic_on': type}
class PasswordUser(User):
__mapper_args__ = {'polymorphic_identity': 'puser'}
password = Column(String(64))
def validatePassword(self, password):
return (self.password == password)
在userManger.py我有這樣的:
def userGet(userID):
with DBStore.Session(db) as sess:
user = sess.query(User).filter(User.userID==userID).one()
sess.expunge(user)
return user
在測試主方法:
myUser = userManager.userGet('123')
myUser.validatePassword("password321')
這產生一個錯誤:
sqlalchemy.orm.exc.DetachedInstanceError: Instance is not bound to a Session; attribute refresh operation cannot proceed
我已驗證myUser是「PasswordUser」類型,並且它調用正確的「validatePassword」方法。
奇怪的是,當我慢慢地通過代碼(PyDev),它的工作原理沒有錯誤。
它也適用於我的userGet方法執行sess.query(PasswordUser)。但我想這個方法是通用的,所以它可以返回任何類型的'用戶'。
任何想法?
謝謝!奇蹟般有效! – user2347234 2013-05-06 13:48:39