its a bug, there's an isinstance(str) that should be
isinstance(basestring). please file a trac ticket.
On Mar 2, 2009, at 6:26 PM, Karlo Lozovina wrote:
Hi guys! Here goes the code sample:
from sqlalchemy import create_engine, MetaData
from sqlalchemy import Table, Column, ForeignKey, Integer
from sqlalchemy.orm import sessionmaker, mapper, relation
metadata = MetaData()
engine = create_engine('sqlite:///:memory:', echo=True)
parent_table = Table('parent', metadata,
Column('id', Integer, primary_key=True))
child_table = Table('child', metadata,
Column('id', Integer, primary_key=True),
Column('parent_id', Integer, ForeignKey('parent.id')))
class Parent(object): pass
class Child(object): pass
mapper(Parent, parent_table, properties={'children': relation(Child,
backref=u'parent')})
mapper(Child, child_table)
metadata.create_all(engine)
session = sessionmaker(bind=engine)()
parentobj = Parent()
Running this code fails with this error:
.../SQLAlchemy-0.5.2-py2.6.egg/sqlalchemy/orm/properties.pyc in
_post_init(self)
993
994 if self.backref is not None:
-- 995 self.backref.compile(self)
996 elif not mapper.class_mapper(self.parent.class_,
compile=False)._get_property(self.key, raiseerr=False):
997 raise sa_exc.ArgumentError(Attempting to assign a
new relation '%s' to
AttributeError: 'unicode' object has no attribute 'compile'
This line is the problem:
mapper(Parent, parent_table, properties={'children': relation
(Child, backref=u'parent')})
or, to be precise, `backref=u'parent'`. With just `backref='parent'`,
everything works just fine, it breaks down when using a unicode
literal for backref name. Is this a bug, or somehow expected behavior?
Thanks everyone...
--~--~-~--~~~---~--~~
You received this message because you are subscribed to the Google Groups
sqlalchemy group.
To post to this group, send email to sqlalchemy@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
-~--~~~~--~~--~--~---