Les Clés composites dans Sqlalchemy

Je suis en utilisant flask-sqlalchemy pour construire une application web et j'ai le modèle suivant(s):

class Post(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), unique=True)
    candidates = db.relationship('Candidate', backref='post', lazy='dynamic')

    def __init__(self, name):
        self.name = name

    def __repr__(self):
        return "<Post %r>" % self.name

class Candidate(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String(80), primary_key=True)
    post_id = db.Column(db.Integer, db.ForeignKey('post.id'))
    hostel = db.Column(db.String(80))
    yes_no = db.Column(db.Boolean)
    #votes = db.relationship('Vote', backref='vote', lazy="dynamic")

    def __init__(self, name, hostel, post_id, yes_no):
        self.name = name
        self.hostel = hostel
        self.post_id = post_id
        self.yes_no = yes_no

    def __repr__(self):
        return "<Candidate: %r, Post: %r>" % (self.name, self.post.name)

Je suis totalement noob quand il s'agit de la base de données de conception, donc je vais vraiment apprécier quelques conseils sur certaines questions que je

  • Est le id colonne nécessaire? La plupart des tutos que j'ai vu ont que comme une colonne de clé primaire en particulier). Puis-je faire sans elle? En particulier dans les cas où j'ai une autre clé primaire?
  • Comment puis-je avoir une clé composite contrainte sur Candidat#Nom et Candidat#post_id colonnes, étant donné que post_id est une clé étrangère.
  • Comment puis-je "actualiser" de ma base de données. Après j'ai fait des changements dans le modèle, comment puis-je faire en sorte que ces modifications sont reflétées dans les tables réelles? Ai-je besoin de drop_all et create_all manuellement?
  • Enfin, le sqlalchemy documentation s'appliquent à flask-sqlalchemy ainsi?
Vous pouvez scinder ces questions, vous rendant la tâche plus difficile pour les gens de vous fournir des réponses lors de la publication de plusieurs questions en une seule question. Tous les sqlalchemy documentation s'applique à flask-sqlalchemy.

OriginalL'auteur Prakhar | 2012-06-23