sql >> Base de Datos >  >> RDS >> Mysql

SQLAlchemy StaleDataError al eliminar elementos insertados a través de ORM sqlalchemy.orm.exc.StaleDataError

Supongo que puedo dar una pista sobre este problema La versión corta es:"Probablemente tendrá que modificar los datos en la base de datos manualmente para resolver el problema".

La versión más larga:tuve un problema similar con SQLite. Tenía la siguiente tabla asignada:

ingredients = Table('ingredients', metadata,
    Column('recipe_title', Unicode, ForeignKey('recipes.title'), primary_key=True),
    Column('product_title', Unicode, ForeignKey('products.title'), primary_key=True),
    Column('amount', Integer, nullable=False),
    Column('unit_title', Unicode, ForeignKey('units.title')))

¿Ves esa clave primaria compuesta? De alguna manera logré insertar dos filas con el mismo par de título_receta/título_producto. Me sorprendió descubrir que no había una sola restricción en el lado de SQLite para esta tabla (sin clave principal, sin clave externa, era solo una tabla simple), pero bueno, esa es la forma en que funciona sqlalchemy, no mi negocio.

Luego, cuando traté de eliminar un objeto persistente que involucraba esas dos filas, sqlalchemy vio que se violaron sus restricciones y arrojó el 'StaleDataError'. Finalmente, solo tuve que eliminar una fila duplicada manualmente de la tabla SQLite.