I'm afraid there are still some bugs in here that hopefully you can help with.
class Creator(Base): __tablename__ = "creators" id = Column(Integer, primary_key = True) company_id = Column(Integer, ForeignKey('companies.id')) creator = Column(String(100), nullable=False, unique=True) def __init__(self, creator): self.creator = creator def __repr__(self): return '%s' % self.creator # otherwise returns a single entry list for some reason (e.g. would display [user]) class Company(Base): __tablename__ = "companies" id = Column(Integer, primary_key = True) company = Column(String(100), unique=True, nullable=False) #might want to revise string sizes at some point creator = relationship("Creator", backref="companies", cascade="all") def __init__(self, company, creator): self.company = company #self.creator.append(Creator(creator)) existing_creator = session.query(Creator).filter_by(creator=creator).first() #self.creator.append(existing_creator or Creator(creator)) if existing_creator: print True self.creator.append(existing_creator) else: self.creator.append(Creator(creator)) def __repr__(self): return '%s, created by %s' % (self.company, self.creator[0]) 1) Weird __repr__ error: class Creator(Base): def __repr__(self): return '%s' % self.creator class Company(Base): def __repr__(self): return '%s, created by %s' % (self.company, self.creator[0]) >>> c=Company("Company1", "mike") >>> session.add(c) >>> c=Company("Company2", "mike") True >>> session.add(c) >>> c=Company("Company3", "john") >>> session.add(c) >>> c=Company("Company4", "mike") True >>> session.add(c) >>> session.query(Company).all() [Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 17, in __repr__ However, if I divide the query lines among every add() statement, there is no __repr__ error. >>> c=Company("Company1", "mike") >>> session.add(c) >>> session.query(Company).all() [Company1, created by mike] >>> c=Company("Company2", "mike") True >>> session.add(c) >>> session.query(Company).all() [Company1, created by mike, Company2, created by mike] >>> c=Company("Company3", "john") >>> session.add(c) >>> session.query(Company).all() [Company1, created by mike, Company2, created by mike, Company3, created by john] >>> c=Company("Company4", "mike") True >>> session.add(c) >>> session.query(Company).all() [Company1, created by mike, Company2, created by mike, Company3, created by john, Company4, created by mike] 2) Creator.companies only shows the most recently added company: >>> session.query(Company).all() [Company1, created by mike, Company2, created by mike, Company3, created by john, Company4, created by mike] >>> session.query(Creator).all() [mike, john] >>> a=session.query(Creator).first() >>> a[0].companies >>> a.companies Company4, created by mike 3) Weird Company.creator error: >>> session.query(Company).all() [Company1, created by mike, Company2, created by mike, Company3, created by john, Company4, created by mike] >>> session.query(Company.creator).all() [(False,), (False,), (False,), (False,), (True,), (False,), (False,), (True,)] >>> a=session.query(Company).first() >>> a.creator [mike] Anyone have any ideas? -- You received this message because you are subscribed to the Google Groups "sqlalchemy" group. To unsubscribe from this group and stop receiving emails from it, send an email to sqlalchemy+unsubscr...@googlegroups.com. To post to this group, send email to sqlalchemy@googlegroups.com. Visit this group at http://groups.google.com/group/sqlalchemy. For more options, visit https://groups.google.com/groups/opt_out.