pypisqlalchemy95% confidence\u2191 92

AttributeError while querying: Neither 'InstrumentedAttribute' object nor 'Comparator' has an attribute

Full error message
The following code:

Base = declarative_base()
engine = create_engine(r"sqlite:///" + r"d:\foo.db",
                       listeners=[ForeignKeysListener()])
Session = sessionmaker(bind = engine)
ses = Session()

class Foo(Base):
    __tablename__ = "foo"
    id = Column(Integer, primary_key=True)
    name = Column(String, unique = True)

class Bar(Base):
    __tablename__ = "bar"
    id = Column(Integer, primary_key = True)
    foo_id = Column(Integer, ForeignKey("foo.id"))

    foo = relationship("Foo")

class FooBar(Base):
    __tablename__ = "foobar"
    id = Column(Integer, primary_key = True)
    bar_id = Column(Integer, ForeignKey("bar.id"))

    bar = relationship("Bar")

Base.metadata.create_all(engine)
ses.query(FooBar).filter(FooBar.bar.foo.name == "blah")

is giving me this error:

AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with FooBar.bar has an attribute 'foo'

Any explanations, as to why this is happening, and guidance to how such a thing could be achieved?

This is because you are trying to access bar from the FooBar class rather than a FooBar instance. The FooBar class does not have any bar objects associated with it--bar is just an sqlalchemy InstrumentedAttribute. This is why you get the error: AttributeError: Neither 'InstrumentedAttribute' object nor 'Comparator' object associated with FooBar.bar has an attribute 'foo' You will get the same error by typing FooBar.bar.foo.name outside the sqlalchemy query. The solution is to call the Foo class directly: ses.query(FooBar).join(Bar).join(Foo).filter(Foo.name == "blah")

API access

Get this solution programmatically \u2014 free, no authentication.

curl https://depscope.dev/api/error/4965c60ef1f59f630528033c8367abaad00fea69df57fe877b074f46e956d0eb
hash \u00b7 4965c60ef1f59f630528033c8367abaad00fea69df57fe877b074f46e956d0eb
AttributeError while querying: Neither 'InstrumentedAttr… — DepScope fix | DepScope