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 [email protected]
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
-~----------~----~----~----~------~----~------~--~---