私はflask-sqlalchemy
webapp を構築するために使用しており、次のモデルがあります。
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 が外部キーである場合、Candidate#Name 列と Candidate#post_id 列に複合キー制約を設定するにはどうすればよいですか。
データベースを「更新」するにはどうすればよいですか。モデルに変更を加えた後、それらの変更が実際のテーブルに反映されていることを確認するにはどうすればよいですか? 手動で行う必要が
drop_all
ありcreate_all
ますか?最後に、
sqlalchemy
ドキュメントも同様に適用さflask-sqlalchemy
れますか?