Я использую 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
?