'''
For some reason, when I define my class seems to impact sqlalchemy
Below is code where if the "class Formation(Library): pass" line is
moved down,
it works, but as is, I get the error at the end of this file, raised
when the last line runs
This seems very odd (and bug like) to me, and I'm searching for an
explanation, as well as a way to avoid the problem
other than carefully shuffling the order of my code around (which can
be impossible in a larger project)
I'm very new to sqlalchemy, so its likely I'm missing something
conceptually;
but I don't know where to look for docs about such an issue.
This is the minimized version of my project messily crammed into a
single file.
Any insight would be greatly appreciated.
Thanks,
-Craig
sqlalchemy 0.6.1 Mac osx 10.5.8, python 2.6.5, intel CPU
'''
from sqlalchemy import create_engine
engine = create_engine('sqlite:///test.db', echo=False)
from sqlalchemy import Table, Column, Integer, String, MetaData,
ForeignKey
from sqlalchemy.orm import mapper, relation, create_session,
sessionmaker
metadata = MetaData()
tree_table = Table('tree', metadata,
Column('id', Integer, primary_key=True),
Column('parent_id', Integer, ForeignKey('tree.id')),
Column('name', String),
Column('type', String(30), nullable=False),
)
class Tree(object):
def __init__(self):self.children=[]
class Library(Tree): pass
lib = Table("Library", metadata,Column('tree_id', Integer,
ForeignKey('tree.id'), primary_key=True))
metadata.create_all(engine)
mapper(Tree, tree_table, polymorphic_on=tree_table.c.type,
polymorphic_identity='Tree',
properties={'children':relation(Tree, cascade="all")})
# Crash position
class Formation(Library): pass
mapper(Library, lib, inherits=Tree, polymorphic_identity='Library')
No Crash position
# class Formation(Library): pass
masterLib=Library()
sessionmaker(bind=engine)().add(masterLib)
masterLib.children.append(Formation())
'''
Traceback (most recent call last):
File "main.py", line 38, in
masterLib.children.append(x())
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/collections.py", line 930, in
append
item = __set(self, item, _sa_initiator)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/collections.py", line 905, in
__set
item = getattr(executor, 'fire_append_event')(item, _sa_initiator)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/collections.py", line 596, in
fire_append_event
item, initiator)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/attributes.py", line 662, in
fire_append_event
value = ext.append(state, value, initiator or self)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/unitofwork.py", line 40, in
append
sess.add(item)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/session.py", line 1058, in add
self._save_or_update_state(state)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/session.py", line 1068, in
_save_or_update_state
self._cascade_save_or_update(state)
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/sqlalchemy/orm/session.py", line 1072, in
_cascade_save_or_update
'save-update', state, halt_on=self.__contains__):
File "/Library/Frameworks/Python.framework/Versions/2.6/lib/
python2.6/site-packages/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'
'''
--
You received this message because you are subscribed to the Google Groups
"sqlalchemy" group.
To post to this group, send email to sqlalch...@googlegroups.com.
To unsubscribe from this group, send email to
sqlalchemy+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/sqlalchemy?hl=en.