I'm having problem with the following code which is designed to remove an
object identified as malformed prior to session.commit():
if tickers[x] not in existing_tickers and company_names[x] not in
existing_companies:
company = Company(tickers[x], company_names[x], creators[x], links[x])
session.add(company)
new_companies.append(company)
bad_ticks = []
for company in new_companies:
if company.get_prices() == False:
bad_ticks.append(company)
for tick in bad_ticks:
session.expunge(tick)
session.commit()
I receive the following error:
/Library/Python/2.7/site-packages/sqlalchemy/orm/dependency.py:746:
SAWarning: Object of type <Company> not in session, add operation along
'Creator.companies' won't proceed
uowcommit, "add")
Class Company() has a relationship with Class Creator() (referenced in
error message). The relationship between Company and Creator is summarized
briefly as follows:
class Company(Base):
__tablename__ = "companies"
creator = relationship("Creator", backref="companies")
def __init__(self, ticker, company, creator, link):
self.creator.append(Creator(creator))
class Creator(Base):
__tablename__ = "creators"
company_id = Column(Integer, ForeignKey('companies.id'))
creator = Column(String(100), nullable=False)
A Creator can have a relationship with multiple Companies but any one
Company can have a relationship with only one Creator.
My guess is that the Company is getting expunged from the session but the
corresponding Creator isn't, and that's confusing MySql and/or sqlalchemy.
However, I don't know how to try to expunge the Creator object since it's
only ever called within the Company class. Anyone know the proper way to
fix this?
Thanks,
Chris
--
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.