我将电子邮件地址保存在两个表中:userid和domain。该模型看起来像这样:
class Email():
id = Column(Integer, primary_key=True)
parent_id = Column(Unicode, ForeignKey('domain.id'))
parent = relationship('Domain')
userid = Column(Unicode)
class Domain():
id = Column(Integer, primary_key=True)
host = Column(Unicode)
我突然开始遇到连接问题。当我执行以下操作时,我总是得到无:
def get_email(email):
fragments = email.lower().split(u'@')
return DBSession().query(Email).filter(Email.userid == fragments[0]).join(Domain, Domain.id == Email.parent_id).filter(Domain.host == fragments[1]).first()
但如果我将此连接分成两个查询,我将检索正确的对象:
def get_email(email):
fragments = email.lower().split(u'@')
session = DBSession()
thehost = session.query(Domain).filter(Domain.host == fragments[1]).first()
return session.query(Email).filter(Email.userid == fragments[0]).filter(Email.parent_id == thehost.id).first()
任何人都知道我做错了什么,或者我应该如何进行故障排除?我花了最后30分钟无济于事......谢谢!
答案 0 :(得分:0)
找出问题所在。与继承和别名有关。课程:如果连接从同一对象继承的两个对象,则至少为其中一个对象添加别名!