【问题标题】:How would I access the third column in a many to many table我将如何访问多对多表中的第三列
【发布时间】:2022-01-15 01:48:24
【问题描述】:

我正在尝试创建一个表来记录 mysql 中用户的喜欢,并且我添加了一个布尔列来检查该用户是否喜欢特定的帖子,但我不太确定如何访问我的第三个布尔列。我正在使用烧瓶-sqlalchemy。我也愿意接受更好的方法来做到这一点。

likes = db.Table('likes',
    db.Column('Users_id', db.Integer, db.ForeignKey('users.id'), primary_key=True),
    db.Column('Post_id', db.Integer, db.ForeignKey('posts.id'), primary_key=True),
    db.Column('Liked_status', db.Boolean, default = False)
)

【问题讨论】:

    标签: python sqlalchemy


    【解决方案1】:

    这里不需要布尔列。这对您的情况就足够了:

    likes = db.Table('likes',
        db.Column('Users_id', db.Integer, db.ForeignKey('users.id'), primary_key=True),
        db.Column('Post_id', db.Integer, db.ForeignKey('posts.id'), primary_key=True),
    )
    

    如果给定 user.id 和 post.id 的记录存在,则表示 post.id 被 user.id 喜欢。所以like 方法应该创建记录,而unlike 应该删除记录。

    要检查user_id是否喜欢post_id,您可以执行查询:

    exist_like = session.query(likes).filter(likes.c.user_id == user_id, likes.c.post_id == post_id).one()
    

    【讨论】:

      猜你喜欢
      • 2017-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 1970-01-01
      相关资源
      最近更新 更多