私はSQLAlchemyにこのテーブル構造を持っています:
User(Base)
__tablename__ = 'users'
id = Column(Integer, primary_key = True)
addresses = relationship("Address", backref="user")
Address(Base)
__talbename__ = 'addresses'
id = Column(Integer, primary_key = True)
user_id = Column(Integer, ForeignKey(users.id))
つまり、多(アドレス)から1(ユーザー)の関係です。
私の質問は、すでに保存されているアドレスを削除せずに、ユーザーにアドレスを簡単に追加するにはどうすればよいかということです。
純粋なSQLでは、適切なユーザーへの外部キーを使用してアドレステーブルに行を挿入するだけです。
これは私がSQLAlchemy(ユーザークラスのメソッド)で今それをしている方法です:
def add_address(self, address):
adds = self.addresses
adds.append(address)
self.addresses = adds
つまり、私が基本的に行っているのは、最初にすべてのアドレスを検索し、次にリストを追加してリストを追加のアドレスで再度上書きすることです。
これを行うためのより効率的な方法があるかどうか疑問に思いましたか?