On Apr 5, 2011, at 9:06 AM, Israel Ben Guilherme Fonseca wrote:

> Hi,
> 
> Is it possible to break a table in two Python objects? Ex:
> 
> Python objects:
> 
> class Person:
> 
>     name = Column(String)
> 
> class Address:
> 
>     street = Column(String)
>     city = Column(String)
> 
> 
> Table:
> 
> table Person
>     name varchar
>     city varchar
>     street varchar
> 
> How can i make the "connection" between the two? 

You could map Person and Address both to the table, excluding/including columns 
from each using mapper "include_properties/exclude_properties" (see the docs), 
however relationship() would not be able to handle the join condition of this 
table, which is table.id==table.id.

So in the practical sense, you'd just do this:

class Person(object):
    @property
    def address(self):
        return Address(self.street, self.city)

or similarly use a composite (search the mapping documentation for "composite") 
to achieve the Address class composed of that subset of columns.    If you 
choose "composite" I'd note 0.7 improves upon the scalability of the 
"composite" feature significantly (for small datasets in memory it doesn't 
matter though).

> And is it possible to make the inverse? (table Person and Address to a single 
> Python object Person)

you can map to a join of the two tables as described at 
http://www.sqlalchemy.org/docs/orm/mapper_config.html#mapping-a-class-against-multiple-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