我将电子邮件地址保存在两个表中: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分钟都没用。。。谢谢!你知道吗
解决了问题。与继承和别名有关。教训:如果连接从同一对象继承的两个对象,请至少对其中一个对象使用别名!你知道吗
相关问题 更多 >
编程相关推荐