small working test script that uses sqlite. you can post a ticket or
send an email to the list.
On Jul 18, 2006, at 5:08 PM, Sol wrote:
> Hello,
> tinkered a little more on the problem but got nowhere. Should i
> create a
> ticket on the topic?
>
> Cheers, Sol.
>
>
> Sol wrote:
>> Hello again,
>>
>>
>>> the mapper associated with select_table is not getting compiled.
>>> this
>>> is a product of the simplification to mapper compilation which
>>> compiles
>>> all primary mappers when one of them compiles. bizarely, half a
>>> dozen
>>> unit tests dont reproduce the simpler condition here; now there
>>> is. try
>>> revision 1703.
>>
>>
>> This works smoothly now, thanks:)
>>
>> However i stumbled upon an other problem. I tried to add a many-to-
>> many
>> relationship between Manager and Employee and got an other traceback.
>>
>> An interactive session with the attached file results in (sa rev
>> 1711):
>>
>>
>>>>> from polymorphic import *
>>>>> create_some_employees()
>>
>> Traceback (most recent call last):
>> File "<stdin>", line 1, in ?
>> File "polymorphic.py", line 74, in create_some_employees
>> session.save(Manager('Tom', 'knows how to manage things'))
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/
>> mapper.py", line
>> 416, in init
>> mapper = mapper.compile()
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/
>> mapper.py", line
>> 152, in compile
>> self._do_compile()
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/
>> mapper.py", line
>> 175, in _do_compile
>> self._compile_inheritance()
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/
>> mapper.py", line
>> 222, in _compile_inheritance
>> self.inherits = self.inherits._do_compile()
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/
>> mapper.py", line
>> 179, in _do_compile
>> self._initialize_properties()
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/
>> mapper.py", line
>> 381, in _initialize_properties
>> prop.init(key, self)
>> File "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/mapper.py",
>> line 1116, in init
>> self.do_init(key, parent)
>> File
>> "/home/sol/sandbox/sqlalchemy/lib/sqlalchemy/orm/properties.py", line
>> 207, in do_init
>> self.target = self.mapper.mapped_table
>> AttributeError: 'Mapper' object has no attribute 'mapped_table'
>>
>> I'm still not sure if I'm missing something or if it is a bug. I
>> found
>> nothing on mapped_table in the docs or the archives.
>>
>> Is this related to the broken test case orm.inheritance.InheritTest4?
>>
>>
>> Cheers, Sol.
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> ---
>>
>> from sqlalchemy import *
>>
>> db = create_engine('postgres:///satest')
>> metadata = BoundMetaData(db)
>>
>> session = create_session()
>>
>> class Employee(object):
>> def __init__(self, name):
>> self.name = name
>> def __repr__(self):
>> return self.__class__.__name__ + " " + self.name
>>
>> class Manager(Employee):
>> def __init__(self, name, manager_data):
>> self.name = name
>> self.manager_data = manager_data
>> def __repr__(self):
>> return self.__class__.__name__ + " " + self.name + " " +
>> self.manager_data
>>
>> class Engineer(Employee):
>> def __init__(self, name, engineer_info):
>> self.name = name
>> self.engineer_info = engineer_info
>> def __repr__(self):
>> return self.__class__.__name__ + " " + self.name + " " +
>> self.engineer_info
>>
>>
>> people = Table('people', metadata,
>> Column('person_id', Integer, primary_key=True),
>> Column('name', String(50)),
>> Column('type', String(30)))
>>
>> engineers = Table('engineers', metadata,
>> Column('person_id', Integer, ForeignKey('people.person_id'),
>> primary_key=True),
>> Column('engineer_info', String(50)),
>> )
>>
>> managers = Table('managers', metadata,
>> Column('person_id', Integer, ForeignKey('people.person_id'),
>> primary_key=True),
>> Column('manager_data', String(50)),
>> )
>>
>> people_managers = Table('people_managers', metadata,
>> Column('person_id', Integer, ForeignKey("people.person_id")),
>> Column('manager_id', Integer, ForeignKey("managers.person_id"))
>> )
>>
>> person_join = polymorphic_union( {
>> 'engineer':people.join(engineers),
>> 'manager':people.join(managers),
>> 'person':people.select(people.c.type=='person'),
>> }, None, 'pjoin')
>>
>>
>>
>>
>> person_mapper = mapper(Employee, people, select_table=person_join,
>> polymorphic_on=person_join.c.type, polymorphic_identity='person',
>> properties = dict(managers = relation(Manager,
>> secondary=people_managers, lazy=False))
>> )
>>
>>
>>
>> mapper(Engineer, engineers, inherits=person_mapper,
>> polymorphic_identity='engineer')
>> mapper(Manager, managers, inherits=person_mapper,
>> polymorphic_identity='manager')
>>
>>
>>
>> def create_some_employees():
>> people.create()
>> engineers.create()
>> managers.create()
>> people_managers.create()
>> session.save(Manager('Tom', 'knows how to manage things'))
>> session.save(Engineer('Kurt', 'knows how to hack'))
>> session.flush()
>>
>>
>>
>>
>>
>> ---------------------------------------------------------------------
>> ---
>>
>>
>> ---------------------------------------------------------------------
>> ----
>> Using Tomcat but need to do more? Need to support web services,
>> security?
>> Get stuff done quickly with pre-integrated technology to make your
>> job easier
>> Download IBM WebSphere Application Server v.1.0.1 based on Apache
>> Geronimo
>> http://sel.as-us.falkag.net/sel?
>> cmd=lnk&kid=120709&bid=263057&dat=121642
>>
>>
>> ---------------------------------------------------------------------
>> ---
>>
>> _______________________________________________
>> Sqlalchemy-users mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
>
>
> ----------------------------------------------------------------------
> ---
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to
> share your
> opinions on IT & business topics through brief surveys -- and earn
> cash
> http://www.techsay.com/default.php?
> page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Sqlalchemy-users mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Sqlalchemy-users mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users