Я сохраняю адреса электронной почты в двух таблицах: идентификатор пользователя и домен. Модель выглядит примерно так:
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)
У меня внезапно начались проблемы с объединениями. Когда я делаю следующее, я всегда получаю None:
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 минут безрезультатно ... Спасибо!