Составные ключи в Sqlalchemy

Я использую flask-sqlalchemyдля создания веб-приложения, и у меня есть следующие модели:

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)

Я полный ноль, когда дело касается проектирования баз данных, поэтому я Буду очень признателен за несколько советов по некоторым фундаментальным запросам, которые у меня есть

  • Нужен ли столбец id? В большинстве руководств, которые я видел, это столбец (в частности, первичный ключ).Могу ли я обойтись без него? Особенно в тех случаях, когда у меня есть другой первичный ключ?

  • Как установить ограничение составного ключа для столбцов Candidate#Name и Candidate#post_id, учитывая, что post_id является внешним ключом.

  • Как я могу "обновить" мою базу данных. После того, как я внес изменения в модель, как я могу убедиться, что эти изменения отражены в реальных таблицах? Нужно ли drop_allи create_allвручную?

  • Наконец, применима ли документация sqlalchemyк flask-sqlalchemy?

12
задан Prakhar 23 June 2012 в 09:45
поделиться