sql >> Database >  >> RDS >> Mysql

SQLAlchemy StaleDataError bij het verwijderen van items die zijn ingevoegd via ORM sqlalchemy.orm.exc.StaleDataError

Ik denk dat ik een hint kan geven op dit probleem. De korte versie is:"U zult waarschijnlijk de gegevens in de database handmatig moeten wijzigen om het probleem op te lossen".

De langere versie:ik had een soortgelijk probleem met SQLite. Ik had de volgende tabel in kaart gebracht:

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

zie je die samengestelde primaire sleutel? Het is me op de een of andere manier gelukt om twee rijen in te voegen met hetzelfde recept_titel/product_titel-paar. Ik was verrast om te ontdekken dat er geen enkele beperking was aan de kant van SQLite voor deze tabel (geen primaire sleutel, geen vreemde sleutel - het was gewoon een eenvoudige vanilletabel), maar goed - zo gaat sqlalchemy, niet mijn zaken.

Toen ik vervolgens probeerde een vaststaand object met die twee rijen te verwijderen, zag sqlalchemy dat de beperkingen waren geschonden en het gooide de 'StaleDataError'. Ten slotte moest ik gewoon een dubbele rij handmatig verwijderen uit de SQLite-tabel.



  1. Kolomnaam ophalen in plaats van kolomwaarde

  2. mysql draaitabel met tekenreekswaarden

  3. MySQL:Activeer trigger nadat transactie is doorgevoerd

  4. Eén Django-model, meerdere tafels?