On 5/7/07, Spider <[EMAIL PROTECTED]> wrote:
>
> I'm fairly new to this, and trying to understand the ORM relationship
> between a class and a table row. In most of the examples in the
> documentation, there is a one-to-one relationship; a class instance
> corresponds to a row of a table.
>
> In my application, my data falls into a 3-tier structure, represented
> by tables A, B and C. Each A has zero or more Bs, and each B and zero
> or more Cs. So, A->B is one-to-many, and B->C is one-to-many.
>
> >From an application perspective, the only type of entity is a "A", the
> only reason I have Bs and Cs is that SQL tables cannot have repeating
> columns (my previous database experience is with a non-SQL database
> that allows repeating data items!). I think of the Bs and Cs as just
> part of the particular A to which they belong.

*If* I understood your point correctly (sorry if it's not the case), I
think you are looking for one-to-many relationships to the object
itself. This can very well be done. Just remember a one-to-many
relationship from A to B is expressed in your table as a foreignkey
from B to A !

http://www.sqlalchemy.org/docs/datamapping.html#datamapping_relations_onetomany


>
> Now, in Python I can represent all the data for a particular A (ie A+B
> +C) together in one item, say a nested dictionary.

A nested dictionary will probably be quite hard to do with SQLAlchemy alone.

> My question is, can the SQLAlchemy ORM do this for me - i.e. have a
> single class A which maps to my 3 tables A,B,C and "knows" how they
> are joined? If so, what should my class and table declarations look
> like (and for bounus points, can I specify the declaration using
> Elixir).

In elixir, what you asked above (again assuming I understood what you
wanted) would translate to:

class A(Entity):
    has_field('name', String) # or whatever fields has the table
    ...
    belongs_to('parent', of_kind='A')
    has_many('children', of_kind='A')

-- 
Gaƫtan de Menten
http://openhex.org

--~--~---------~--~----~------------~-------~--~----~
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 [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to