- changed status to resolved
unmapped class detection broken with inheritance
Issue #1846
resolved
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)
-
reporter -
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())
-
reporter - changed status to resolved
50176cf290767b6dbd2e361b4440d308328be173 . Took a slightly weird route on this one, to allow the uninstrumented subclass to give itself a manager when
__init__()
is called if one doesn't exist already. -
reporter - removed milestone
Removing milestone: 0.6.3 (automated comment)
- Log in to comment
d559f9fc94a9635984470634a7b6714e168361a0