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