1

所以我真的不知道如何命名我的问题,所以这是我最好的选择。现在,我的情况是我有几张桌子:

Post
---------
Id
#....

Alert
-------------
Id
like_id
Seen

Like
--------
id
post_id

现在,我需要在我拥有帖子 ID 的地方设置请求处理,但我需要找出是否已经启动了与同一帖子对应的另一个警报。所以基本上,它是一个“两层”查询,我必须在其中找到对应于同一个帖子的类似的警报。我怎么能用 sqlalchemy 做到这一点?

4

1 回答 1

3

For example:

class Post(Base):
    __tablename__ = 'post'

    id = Column(Integer, primary_key=True)
    text = Column(Unicode)

class Like(Base):
    __tablename__ = 'like'

    id = Column(Integer, primary_key=True)
    post_id = Column(Integer, ForeignKey(Post.id), nullable=False)

class Alert(Base):
    __tablename__ = 'alert'

    id = Column(Integer, primary_key=True)
    like_id = Column(Integer, ForeignKey(Like.id))

Then in SQLAlchemy you can use the following query:

DBSession.query(Alert.id).join(Like).join(Post).filter(Post.id==2).all()
于 2012-09-12T03:16:39.280 回答