2017-02-12 57 views
0

我正在使用SQLAlchemy。基本上我会有一堆这样的帖子。这是MySql数据库的正确设计:列表列表还是其他表格?

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) 

我想跟踪喜欢帖子的用户。我不知道我是应该在帖子表中使用列列表还是另外创建一个表来保存喜欢的用户。请给出建议并保持简单,我对mysql很陌生。

回答

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")) 

并添加以下分别likes列帖子和用户的类:

likes = sqlalchemy.orm.relationship('Like', backref='post') 
likes = sqlalchemy.orm.relationship('Like', backref='user') 

此两列介绍了这些表之间的关系,backref将一个引用添加到您的像类将指向特定用户和帖子。用法 例子:

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()