我正在使用SQLAlchemy。基本上我会有一堆像这样的帖子。
class Post(Base):
__tablename__ = "posts"
post_id = Column(Integer, nullable=False, autoincrement=True, primary_key=True)
user_id = Column(Integer, ForeignKey("users.user_id"), nullable=False) #author
post_text = Column(VARCHAR(140), nullable=False)
post_image = Column(VARCHAR(255))
like = Column(Integer, nullable=False)
datetime = Column(VARCHAR(255), nullable=False)
我想跟踪喜欢帖子的用户。我不知道是否应该在posts表中使用列列表,或者完全创建另一个表来保存喜欢的用户。请给出建议并保持简单,我对mysql很新。
答案 0 :(得分:0)
class Like(Base):
__tablename__ = 'likes'
id = Column(Integer, primary_key=True)
post_id = Column(Integer, ForeignKey("posts.user_id"))
user_id = Column(Integer, ForeignKey("users.user_id"))
分别在Post和User类中添加以下likes
列:
likes = sqlalchemy.orm.relationship('Like', backref='post')
likes = sqlalchemy.orm.relationship('Like', backref='user')
这两列描述了这些表之间的关系,backref将添加一个对你的Like类的引用,它将指向特定的用户和帖子。 用法示例:
user = session.query(User).get(1)
post = session.query(Post).get(1)
like = Like(user=user, post=post)
session.add(like)
session.commit()
假设您希望得到一个帖子的总喜欢:
post = session.query(Post).get(postid)
post.likes.count()