1

問題に名前を付ける方法がよくわからなかったので、それが私のベストショットでした。現在、私の状況はいくつかのテーブルがあります。

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

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

Like
--------
id
post_id

そして今、私は投稿のIDを持っている場所でリクエスト処理を設定する必要がありますが、同じ投稿に対応する別のアラートがすでに開始されているかどうかを確認する必要があります。つまり、基本的には「2層」のクエリであり、同じ投稿に対応するlikeに対応するアラートを見つける必要があります。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 に答える