与SQLAlchemy和连接有一个奇怪的问题

时间:2011-12-13 02:04:54

标签: python sqlalchemy

我将电子邮件地址保存在两个表中: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分钟无济于事......谢谢!

1 个答案:

答案 0 :(得分:0)

找出问题所在。与继承和别名有关。课程:如果连接从同一对象继承的两个对象,则至少为其中一个对象添加别名!