[SQLAlchemy]複合キーの作成



  • SQLAlchemy公式サイト-正式な書類

  • スタックオーバーフロー-sqlalchemy unique across multiple columns

  • ダウンジャケットホットスポット-multi-column primary key
  • user idとbook idを組み合わせた複合キーを設定する必要があります.
    ユーザーごとにこの本を1回しか評価できません.
    「複合キー(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)
        
    まず、対応するコードを使用して解決します.
    PrimaryKey Constraint VS UniqueKey Constraint
    複合キー設定方式で両方使っているようですが、違いはよくわかりません.