I have another question about a piece of code that I posted the other day. 
Namely, I have a one-to-many relationship between Creator and Company. A 
Creator can have a relationship with multiple Companies but any one Company 
can have a relationship with only one Creator.

class Company(Base):
    __tablename__ = "companies"
    id = Column(Integer, primary_key = True)
    company = Column(String(100), unique=True, nullable=False)
    creator = relationship("Creator", backref="companies", cascade="all")
    def __init__(self, company, creator):
        self.company = company
        self.creator.append(Creator(creator))

class Creator(Base):
    __tablename__ = "creators"
    company_id = Column(Integer, ForeignKey('companies.id'))
    creator = Column(String(100), nullable=False, unique=True)
    def __init__(self, creator):
        self.creator = creator

So, to create a Company, the code calls company = Company(<company name>, 
<creator name>) and that in turn calls Creator().

The problem is that the Companies get added one by one, and if a new 
company being entered has a Creator with a name of a preexisting company, 
SQLalchemy errors due to the unique=True flag:

sqlalchemy.exc.IntegrityError: (IntegrityError) (1062, "Duplicate entry 
'Viking' for key 'creator'") 'INSERT INTO creators (company_id, creator) 
VALUES (%s, %s)' (17L, u'Viking')

If unique=True isn't enabled, it will create another Creator of the same 
name. Instead, the code should reflect the additional Company assigned to 
this particular Creator. How might I go about fixing this?

Thanks!

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