Thank you, everyone, for your extremely helpful responses.  You really 
helped clear this matter up



On Thursday, March 27, 2014 9:27:42 AM UTC-4, Darin Gordon wrote:
>
> Let me preface this by saying that I researched to the best of my 
> abilities the answers to my following inquiries.  I would not ask for help 
> without first trying to investigate this on my own.  Asking through this 
> forum is the proverbial end of the line, so thanks for taking any time to 
> read and respond.
>
> I understand relational databases and have been bridging a knowledge gap 
> with ORMs, using SQLAlchemy.  I've struggled a bit while learning what 
> exactly is going on in the ORM when ADDING new associations in a M to N 
> relationship.   
>
> My questions are related to SQL Alchemy ORM concepts:
> 1) Relationships
> 2) Association Object pattern
> 3) Association Proxy
>
>
> To help me grasp the concepts, I pieced together a working example of an M 
> to N relation and drew a diagram showing the relationships.   The scenario 
> is of a very crude appointment scheduler that someone like a realtor may 
> use to keep track of who is visiting what property.  My attribute naming 
> convention was chosen to facilitate our discussion.  *Link:   Github repo 
> <http://www.github.com/dowwie/sqlalchemyillustrated>*
>
> There are two files of interest:
>
>    - orm_associations.py -- a working example 
>    - "SQLAlchemy - Association Object Relations.pdf" --  contains a 
>    diagram of the M to N relationship in orm_associations.py
>    
>
> In this example, a user can be added to a meeting OR a meeting can be 
> added to a user using either of these association proxies:
>
> Meeting.attendees_proxy.append(User)
> or
> User.meetings_proxy.append(Meeting)
>
> These statements create the desired outcome-- a new Appointment record 
> inserted into the association table and possibly a new user or meeting 
> record if none already exist.
>
> I'd like to know what exactly is happening in the ORM when either of these 
> statements is executed.
> For instance, what is the association_proxy creator doing?  If I add a 
> user to a meeting, the attendees_proxy creator is defined as follows:
> creator=lambda user: Appointment(appointment_user_relation=user))
> The creator expression appears to be creating a new Appointment object, 
> but then defines the RELATIONSHIP as a User object?  I'm missing something 
> here.  No idea what is going on. It seems to be all a bit to automagical 
> to me.
>
>
> Thanks
>
> Darin
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to sqlalchemy+unsubscr...@googlegroups.com.
To post to this group, send email to sqlalchemy@googlegroups.com.
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to