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