SQLAlchemy を使用して、両端の関連付けプロキシとの関係に関するメタデータを含むマッピング テーブルを使用して、単純な多対多の関係を作成しようとしています。しかし、私はそれを機能させることができないようです。これは、私がそれを理解しようとして取り組んできたおもちゃの例です。
Base = declarative_base()
def bar_creator(bar):
_ = FooBar(bar=bar)
return bar
class Foo(Base):
__tablename__ = 'foo'
id = Column(Integer, primary_key=True)
name = Column(String)
bars = association_proxy('bar_associations', 'bar',
creator=bar_creator)
def foo_creator(foo):
_ = FooBar(foo=foo)
return foo
class Bar(Base):
__tablename__ = 'bar'
id = Column(Integer, primary_key=True)
name = Column(String)
foos = association_proxy('foo_associations', 'foo',
creator=foo_creator)
class FooBar(Base):
__tablename__ = 'fooBar'
foo_id = Column(Integer, ForeignKey('foo.id'), primary_key=True)
bar_id = Column(Integer, ForeignKey('bar.id'), primary_key=True)
bazed = Column(Boolean)
foo = relationship(Foo, backref='bar_associations')
bar = relationship(Bar, backref='foo_associations')
Base.metadata.create_all(engine)
make_session = sessionmaker(bind=engine)
session = make_session()
foo0 = Foo(name='foo0')
session.add(foo0)
bar0 = Bar(name='bar0')
foo0.bars.append(bar0)
creator
関数を追加し__init__
て、実際のユースケースでは機能しない (単一の引数を取る) を記述しないようFooBar
にしました。それに関連付けられたリンク テーブル インスタンスがあります。明らかな何かが欠けているだけだと確信しています(または、できないことをやろうとしているだけかもしれません)が、ドキュメントとグーグルをよく調べた後、なぜそれが機能しないのかわかりません. 私は何を間違っていますか?