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.


Reply via email to