association proxy any() on o2m->non object scalar

Issue #3397 resolved
Mike Bayer repo owner created an issue
from sqlalchemy import *
from sqlalchemy.orm import *
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.ext.associationproxy import association_proxy

Base = declarative_base()

class User(Base):
    __tablename__ = 'users'
    id = Column(Integer, primary_key=True)
    _all_emails = relationship('UserEmail')
    all_emails = association_proxy('_all_emails', 'email')


class UserEmail(Base):
    __tablename__ = 'user_emails'

    id = Column(Integer, primary_key=True)
    user_id = Column(Integer, ForeignKey('users.id'))
    email = Column(String, nullable=False, index=True)

s = Session()

print s.query(User).filter(User.all_emails.any(UserEmail.email.like('foo')))

#print s.query(User).filter(User._all_emails.any(UserEmail.email == 'foo'))
#!



 File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/ext/associationproxy.py", line 233, in _value_is_scalar
    mapper.get_property(self.value_attr).uselist
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/util/langhelpers.py", line 843, in __getattr__
    return self._fallback_getattr(key)
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/util/langhelpers.py", line 821, in _fallback_getattr
    raise AttributeError(key)
AttributeError: uselist

Comments (1)

  1. Mike Bayer reporter
    • Fixed bug in association proxy where an any()/has() on an relationship->scalar non-object attribute comparison would fail, e.g. filter(Parent.some_collection_to_attribute.any(Child.attr == 'foo')) fixes #3397

    → <<cset 4f6e9ccae93b>>

  2. Log in to comment