Hello All,
I am trying to understand how to use SA and need some help.

I have several tables with 2 many-to-many relations with extra columns
and 1 only with foreign keys.
See below for the definitions of tables and mappers. I also created
classes for all tables (entities and associations).

1) For the association without extra-column (self.correspond), no
problem.
I can add questions and categories. For instance:
q=Question(question='blabla')
c=Category('cat1')
q.categories.append(c)
session.save(q)
session.commit()

2) For the 2 other which have extra-columns, I don't understand how to
manage.
For info, these 2 associations relate to both the users and the
questions tables.
For instance, how can I add a question related to a user, ie go
through the ask relation ?
I went through the excellent documentation but I have to admit that I
don't understand...

Can somebody :
- check my mappers are well defined (those with extra columns:
askMapper and answerMapper and also questMapper)
- briefly explain me how to handle operations between users and
questions tables through these mappers
I'm hoping it is clear enough

Thanks a lot in advance for your help
Dominique


Tables and relations are as follows:
#Entities
self.users = Table('users',self.metadata,
                    Column('user_id', Integer, primary_key = True),
                    Column('user_name', Unicode(25), unique = True))

self.categories = Table('categories',self.metadata,
                    Column('categ_id',Integer, primary_key = True),
                    Column('categ_name',Unicode(250), unique = True))#
rajouter unique

self.questions = Table('questions', self.metadata,
                    Column('quest_id', Integer, primary_key = True),
                    Column('question', Unicode(300)))

# Associations
self.correspond = Table('categories_questions', self.metadata,
                    Column('quest_id', Integer,
ForeignKey('questions.quest_id'), primary_key = True),
                    Column('categ_id', Integer,
ForeignKey('categories.categ_id'), primary_key = True))

self.ask = Table('ask', self.metadata,
                    Column('user_id',Integer,
ForeignKey('users.user_id'), primary_key = True),
                    Column('quest_id',Integer,
ForeignKey('questions.quest_id'), primary_key = True),
                    Column('data1',Integer, nullable = False, default
= 50))

self.answer = Table('answer',self.metadata,
                    Column('user_id',Integer,
ForeignKey('users.user_id'), primary_key=True),
                    Column('quest_id',Integer,
ForeignKey('questions.quest_id'), primary_key=True),
                    Column('data2',Integer),
                    ForeignKeyConstraint(['user_id','quest_id'],
['ask.user_id','ask.quest_id']))

# mappers
self.userMapper = mapper(User, self.users)
self.categMapper = mapper(Category, self.categories)

self.questMapper = mapper(Question, self.questions, properties ={
                    # ManyToMany CorrespondAssociation between
questions and categories
                    'categories': relation(Category, secondary =
self.correspond, backref='questions'),

                    # ManyToMany AskAssociation between questions and
users
                    'users': relation(AskAss, backref='questions'),

                    # ManyToMany AnswerAssociation between questions
and users
                    'users': relation(AnswerAss, backref='questions')
                    })

self.askMapper = mapper(AskAss, self.poser, properties = {
                    # Ask Association between questions and users
                    'users': relation(User, backref = 'ask')
                    })

self.answerMapper = mapper(AnswerAss, self.answer, properties = {
                    # ManyToMany AnswerAssociation between questions
and users
                    'users': relation(User, backref = 'answer')
                    })

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