> What from where do I get assign_mapper? I was trying to use mapper() from
> SQLAlchemy.

The code sample below (extracted from my current project) tries to
explain the SQLAlchemy basics that I follow:

# requirement: Users can have many contacts
# and a contact can appear in many users contact list
# one some contacts are marked as favorites

from sqlalchemy import *
from sqlalchemy.ext.assignmapper import assign_mapper
import turbogears
from turbogears.database import metadata, session

# Table definitions

user_tbl = Table('tg_user', metadata,
    Column('user_id', Integer, primary_key=True),
    Column('user_name', Unicode(50), unique=True),
    Column('email_address', Unicode(255), unique=True),
    Column('display_name', Unicode(30), nullable=False),
    Column('password', Unicode(40), nullable=False, default='welcome'),
    Column('created', DateTime, default=datetime.now),
    Column('middle_name', Unicode(30)),
    Column('last_name', Unicode(30), nullable=False)
)

contact_tbl = Table('contact', metadata,
    Column("user_id", Integer, ForeignKey("tg_user.user_id"),
primary_key=True),
    Column("contact_id", Integer, ForeignKey("tg_user.user_id"),
primary_key=True),
    Column("favorite", Boolean, nullable=False, default=False))

# End table definitions

# To separate business logic, I put the business object classes in
different
# files and import it here.
# But, for the sake of this sample code, writing those below.

class User(object):
     def __repr__(self):
        return "User: %s" % self.display_name + ". Contacts: " +
repr(self.contacts)

class Contact(object):
    def __repr__(self):
        return "Contact: " + repr(self.contact.display_name) + "
Favorite: " + repr(self.favorite)

# End business object classes

# Mapping
assign_mapper(session.context, Contact, contact_tbl,
    primary_key = [contact_tbl.c.user_id, contact_tbl.c.contact_id],
    properties={
        'contact' : relation(User,

primaryjoin=user_tbl.c.user_id==contact_tbl.c.contact_id,
                       lazy=False)})

assign_mapper(session.context, User, user_tbl, properties = {
    'contacts' : relation(Contact,

primaryjoin=user_tbl.c.user_id==contact_tbl.c.user_id,
                                 association=User)})
#End mapping

I learned about this pattern from Michael Bayer's post at
https://sourceforge.net/mailarchive/forum.php?thread_id=24200415&forum_id=46961
(second thread)

Sanjay


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"TurboGears" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/turbogears
-~----------~----~----~----~------~----~------~--~---

Reply via email to