SQLAlchemy 공식 사이트 - 공식문서
깃허브 이슈 - multi-column primary key
user_id 와 book_id 가 결합된 복합키를 설정해 줘야 했다.
한 유저당 해당 책에 대해 한 번만 평가를 할 수 있도록.
'복합키(Composite key)'를 열심히 구글링해 보았는데, 뭔가 명확하게 아직 이해는 덜 된 것 같다.
class Rating(db.Model):
__tablename__ = 'rating'
#__table_args__ = db.ForeignKeyConstraint([user_id, book_id], [Users.id, Books.id])
__table_args__ = (db.PrimaryKeyConstraint('user_id', 'book_id', name = 'user_rating_uc'), )
def __init__(self, user_id, book_id, point, description):
self.user_id = user_id
self.book_id = book_id
self.point = point
self.description = description
cur = datetime.datetime.now()
user_id = db.Column(db.Integer, db.ForeignKey('users.id'), nullable=False)
book_id = db.Column(db.Integer, db.ForeignKey('books.id'), nullable=False)
point = db.Column(db.Integer, nullable=False)
created_date = db.Column(db.DateTime, nullable=False, default=cur)
description = db.Column(db.String(250), nullable=False)
해당 코드로 우선 해결하였으나,
PrimaryKeyConstraint VS UniqueKeyConstraint 두 가지 중 어떤 것을 사용해야 맞는 것인지....
복합키 설정 방식으로 두 가지를 모두 쓰는 것 같은데, 차이점을 잘 모르겠다.