Я использую flask-sqlalchemy
построить веб-приложение, и я следующая модель (ы):Композитные ключи в 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
столбец? Большинство учебных пособий, которые я видел, имеют это как столбец (в основном, первичный ключ). Могу ли я обойтись без этого? Особенно в тех случаях, когда у меня есть еще один первичный ключ?Как у меня есть ограничение составного ключа на столбцы # кандидата и кандидата # post_id, учитывая, что post_id является внешним ключом.
Как я могу «обновить» мою базу данных. После внесения изменений в модель, как я могу убедиться, что эти изменения отражены в фактических таблицах? Нужно ли мне
drop_all
иcreate_all
вручную?И, наконец, распространяется ли документа
sqlalchemy
наflask-sqlalchemy
?
Вы можете разделить эти вопросы; вам становится труднее дать людям ответы на вопросы при публикации нескольких вопросов в одном вопросе. Вся документация 'sqlalchemy' относится к' flask-sqlalchemy'. –