sqlalchemy.orm.joinedload silently ignoring not existing columns

Issue #2137 resolved
Former user created an issue

In sqlalchemy 6.x when we use:

my_query.options(sqlalchemy.orm.joinedload('not existing column'))

sqlalchemy raise ''InvalidRequestError'', like:

Mapper 'Mapper|Cause|causes' has no property 'not existing column'

but sqlalchemy 7.x silently skipping it and there is no join for ''not existing column'' in produced SQL.

Comments (3)

  1. Former user Account Deleted

    Here is a example showing what I mean:

    models:

    class Foo(Base):
        __tablename__ = 'foos'
    
        id = Column(Integer, primary_key=True)
        name = Column(Unicode, nullable=False)
        bar_id = Column(Integer, ForeignKey('bars.id'))
        bars = relationship('Bar', backref='foo')
    
    
    class Bar(Base):
        __tablename__ = 'bars'
    
        id = Column(Integer, primary_key=True)
        name = Column(Unicode, nullable=False)
        baz = Column(Unicode, nullable=False)
    

    queries:

    session.query(Foo).options(joinedload('bars')).all()
    session.query(Foo).options(joinedload('not existing one')).all()
    

    sqlalchemy 0.6.7 with correct joinedload column name:

    SELECT foos.id AS foos_id, foos.name AS foos_name, foos.bar_id AS foos_bar_id, bars_1.id AS bars_1_id, bars_1.name AS bars_1_name, bars_1.baz AS bars_1_baz 
    FROM foos LEFT OUTER JOIN bars AS bars_1 ON bars_1.id = foos.bar_id
    

    slqalchemy 0.6.7 with wrong joinedload column name:

    sqlalchemy.exc.InvalidRequestError: Mapper 'Mapper|Foo|foos' has no property 'not existing one'
    

    sqlalchemy 0.7b4 with correct joinedload column name:

    SELECT foos.id AS foos_id, foos.name AS foos_name, foos.bar_id AS foos_bar_id, bars_1.id AS bars_1_id, bars_1.name AS bars_1_name, bars_1.baz AS bars_1_baz 
    FROM foos LEFT OUTER JOIN bars AS bars_1 ON bars_1.id = foos.bar_id
    

    sqlalchemy 0.7b4 with wrong joinedload column name:

    SELECT foos.id AS foos_id, foos.name AS foos_name, foos.bar_id AS foos_bar_id 
    FROM foos
    
  2. Log in to comment