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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/groups/opt_out.