unmapped class detection broken with inheritance

Issue #1846 resolved
Mike Bayer repo owner created an issue
from sqlalchemy import Table, Column, Integer, MetaData
from sqlalchemy.orm import mapper, sessionmaker

metadata = MetaData()
tree_table = Table('tree', metadata,
   Column('id', Integer, primary_key=True),
)

class Tree(object):
    pass

class Formation(Tree):
    pass

mapper(Tree, tree_table)

sessionmaker()().add(Formation())





Traceback (most recent call last):
  File "test.py", line 17, in <module>
    sessionmaker()().add(Formation())
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 1058, in add
    self._save_or_update_state(state)
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 1068, in _save_or_update_state
    self._cascade_save_or_update(state)
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 1072, in _cascade_save_or_update
    'save-update', state, halt_on=self.__contains__):
  File "/Users/classic/dev/sqlalchemy/lib/sqlalchemy/orm/session.py", line 1556, in _cascade_unknown_state_iterator
    for (o, m) in mapper.cascade_iterator(cascade, state, **kwargs):
AttributeError: 'NoneType' object has no attribute 'cascade_iterator'

Comments (4)

  1. Mike Bayer reporter
    • removed status
    • changed status to open

    we should fix this case too, which doesn't raise at all:

    from sqlalchemy import Table, Column, Integer, MetaData
    from sqlalchemy.orm import mapper, sessionmaker
    
    metadata = MetaData()
    tree_table = Table('tree', metadata,
       Column('id', Integer, primary_key=True),
    )
    
    class Tree(object):
        pass
    
    
    mapper(Tree, tree_table)
    
    class Formation(Tree):
        pass
    
    sessionmaker()().add(Formation())
    
  2. Log in to comment