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
>> Sqlalchemy-users@lists.sourceforge.net
>> 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
> Sqlalchemy-users@lists.sourceforge.net
> 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
Sqlalchemy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sqlalchemy-users

Reply via email to