I try to delete data, but sqlalchemy tried to do it twice, and rollback
Base Postgresql
version 9.6
sqlalchemy 1.0.14
psycopg2 2.7.3.1


    class IdentifiedObject(Base):
      __tablename__ = 'identifiedobject'
      mRID = Column(UUID, 
server_default=sqlalchemy.text("uuid_generate_v4()"), primary_key=True)
      name = Column(String)
      polymorphic_type = Column(String, nullable=False)
      
__mapper_args__={'polymorphic_identity':__tablename__,'polymorphic_on':polymorphic_type}
    assoc_1 = Table("assoc_1", Base.metadata,
      Column("cars_mRID", None, ForeignKey("cars.mRID")),
      Column("games_mRID", None, ForeignKey("games.mRID")))
    class Cars(IdentifiedObject):
      __tablename__='cars'
      mRID = Column(None, ForeignKey('identifiedobject.mRID'), 
primary_key=True)
      polymorphic_type = Column(String, nullable=False)
      
__mapper_args__={'polymorphic_identity':__tablename__,'inherit_condition': 
mRID == IdentifiedObject.mRID,'polymorphic_on':polymorphic_type}
      status = Column(String)
      Games = relationship("Games", secondary = "assoc_1", 
back_populates="Cars", primaryjoin="(cars.c.mRID==assoc_1.c.cars_mRID)")
    class Games(IdentifiedObject):
      __tablename__='games'
      mRID = Column(None, ForeignKey('identifiedobject.mRID'), 
primary_key=True)
      polymorphic_type = Column(String, nullable=False)
      
__mapper_args__={'polymorphic_identity':__tablename__,'inherit_condition': 
mRID == IdentifiedObject.mRID,'polymorphic_on':polymorphic_type}
      status = Column(String)
      Cars = relationship("Cars", secondary = "assoc_1", 
back_populates="Games", primaryjoin="(games.c.mRID==assoc_1.c.games_mRID)")
    
    Base.metadata.create_all(engine)
    Base.prepare(engine, reflect=True)
    session = Session(bind=engine)
    session.add(IdentifiedObject())
    games=Games(Cars=[Cars(),Cars()])
    session.add (games)
    session.commit()
    session.close()
    session.delete(games)
    session.commit()

And now we found a exception


    2017-09-29 09:17:44,996 INFO sqlalchemy.engine.base.Engine SELECT 
cars."mRID" AS "cars_mRID", identifiedobject."mRID" AS 
"identifiedobject_mRID", identifiedobject.name AS identifiedobject_name, 
cars.polymorphic_type AS cars_polymorphic_type, 
identifiedobject.polymorphic_type AS identifiedobject_polymorphic_type, 
cars.status AS cars_status 
    FROM assoc_1, identifiedobject JOIN cars ON cars."mRID" = 
identifiedobject."mRID" 
    WHERE %(param_1)s = assoc_1."games_mRID" AND cars."mRID" = 
assoc_1."cars_mRID"
    2017-09-29 09:17:44,996 INFO sqlalchemy.engine.base.Engine {'param_1': 
UUID('7a960989-5e3e-45dc-87c1-1b62ffa3694a')}
    2017-09-29 09:17:44,997 INFO sqlalchemy.engine.base.Engine DELETE FROM 
assoc_1 WHERE assoc_1."cars_mRID" = %(cars_mRID)s AND assoc_1."games_mRID" 
= %(games_mRID)s
    2017-09-29 09:17:44,998 INFO sqlalchemy.engine.base.Engine 
({'games_mRID': UUID('7a960989-5e3e-45dc-87c1-1b62ffa3694a'), 'cars_mRID': 
UUID('a3135561-e416-45c0-b9f8-aead59ef6b34')}, {'games_mRID': 
UUID('7a960989-5e3e-45dc-87c1-1b62ffa3694a'), 'cars_mRID': 
UUID('b77b9dc4-65da-45ea-be52-dc53e2bcd74b')})
    2017-09-29 09:17:44,998 INFO sqlalchemy.engine.base.Engine DELETE FROM 
assoc_1 WHERE assoc_1."cars_mRID" = %(cars_mRID)s AND assoc_1."games_mRID" 
= %(games_mRID)s
    2017-09-29 09:17:44,999 INFO sqlalchemy.engine.base.Engine 
({'games_mRID': UUID('7a960989-5e3e-45dc-87c1-1b62ffa3694a'), 'cars_mRID': 
UUID('a3135561-e416-45c0-b9f8-aead59ef6b34')}, {'games_mRID': 
UUID('7a960989-5e3e-45dc-87c1-1b62ffa3694a'), 'cars_mRID': 
UUID('b77b9dc4-65da-45ea-be52-dc53e2bcd74b')})
    2017-09-29 09:17:44,999 INFO sqlalchemy.engine.base.Engine ROLLBACK
    Traceback (most recent call last):
      File "testing.py", line 98, in <module>
        session.commit()

Exception data


    sqlalchemy.orm.exc.StaleDataError: DELETE statement on table 'assoc_1' 
expected to delete 2 row(s); Only 0 were matched.

Haven't found on other answers

-- 
SQLAlchemy - 
The Python SQL Toolkit and Object Relational Mapper

http://www.sqlalchemy.org/

To post example code, please provide an MCVE: Minimal, Complete, and Verifiable 
Example.  See  http://stackoverflow.com/help/mcve for a full description.
--- 
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 https://groups.google.com/group/sqlalchemy.
For more options, visit https://groups.google.com/d/optout.

Reply via email to