2017-02-12 59 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()