On Jan 12, 2009, at 8:16 PM, _t...@arcor.de wrote:

>
>
> thx for your reply.
>
> Sometimes i got obsolete objects:
>  (Pdb) id( llm_mapper.local_table.foreign_keys[0].column )
>  447124816 <-obsolete column object, but semantically ok
>  (Pdb) id( mapper.local_table.c['asl_id'] )
>  448983376 <-valid column object
>  (Pdb) id( llm_mapper.local_table.foreign_keys[0].column.metadata )
>  416409552
>  (Pdb) id( mapper.local_table.c['asl_id'].metadata )
>  416409552
>
> My application calls Table() several times for some tables, because I
> don't have a static db-catalog.
> After a db-catalog change Table(..autoload,use_existing) is called,
> but foreign_keys uses old column objects (i think so).
> A little example:
>  -table A references B
>  -B is changed, Table( B, ...) is called
>  -metadata containes the new B object
>  -but A.foreign_keys has obsolete column objects
>  -contains_column fails, because it compares object ids(?)

Once "B" is in the metadata, its in.  Calling Table("B") again would  
have no effect if it were already there.    But yes comparisons are  
done based on the hash value of the Column object itself, string names  
are just incidental, so the above structure would produce erroneous  
results. The API allows no public access to create the scenario above  
unless you're deleting the Table object from metadata.tables.


--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to