I have two classes where one f-keys onto another.

Things work perfectly:

     class Foo(Base):
        id = Column(Integer, primary_key=True)
        bar_id = Column(Integer, ForeignKey("bar.id"), nullable=True)
        bar = relationship(
        "bar", 
primaryjoin="Foo.bar_id==Bar.id",
uselist=False,
back_populates="foo",
)

     class Bar(Base):
        id = Column(Integer, primary_key=True)
        foo = relationship(
        "Foo", 
primaryjoin="Bar.id==Foo.bar_id",
uselist=False,
back_populates="bar",
)
Thanks to SQLAlchemy, I can do this:

myFoo.bar = myBar
As expected `myFoo.bar_id` is updated.  Wonderful.

I am working on some new functionality, and hit a potential performance 
issue.  While my `Foo` objects inherently know if there is an associated 
`Bar`, I have to query (direct or via lazy-load) the database to find out 
if a `Bar` has an associate `Foo`.  In most situations, this is not an 
issue. In a few contexts, the lazyloading or joins are a bit burdonsome.

Is there a way to set up the `relationship` so I could do cache the 
`foo_id` on Bar? Something like this:

     class Foo(Base):
        id = Column(Integer, primary_key=True)
        bar_id = Column(Integer, ForeignKey("bar.id"), nullable=True)
        bar = relationship("Bar", ???)
 
      class Bar(Base):
        id = Column(Integer, primary_key=True)
        foo_id = Column(Integer, ForeignKey("foo.id"), nullable=True)
        foo = relationship("Foo", ???)

This is obviously an anti-pattern in database design, as I only need to 
duplicate this data to improve performance in a few places.

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/sqlalchemy/171b01dc-787e-43b6-bd8c-afdceb211543%40googlegroups.com.

Reply via email to