sql >> Databasteknik >  >> RDS >> Mysql

SQLAlchemy StaleDataError vid radering av objekt som infogats via ORM sqlalchemy.orm.exc.StaleDataError

Jag antar att jag kan ge ett tips på detta problem. Den korta versionen är:"Du måste förmodligen ändra data i databasen manuellt för att lösa problemet".

Den längre versionen:Jag hade ett liknande problem med SQLite. Jag hade följande tabell mappad:

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

ser du den sammansatta primärnyckeln? Jag lyckades på något sätt infoga två rader med samma par recept_titel/produkttitel. Jag blev förvånad över att få reda på att det inte fanns en enda begränsning på sidan av SQLite för den här tabellen (ingen primärnyckel, ingen fereignnyckel - det var bara en vanlig vaniljtabell), men ja - det är så sqlalchemy går, inte min företag.

Sedan när jag försökte ta bort ett kvarvarande objekt som involverade dessa två rader, såg sqlalchemy att dess begränsningar överträddes och det kastade 'StaleDataError'. Till slut var jag bara tvungen att ta bort en duplicerad rad manuellt från SQLite-tabellen.



  1. Exportera frågeresultat till en XML-fil när du använder SQLcl (Oracle)

  2. Hur räknar man det totala beställningspriset?

  3. Hur man returnerar en lista över tillgängliga teckenuppsättningar i MySQL

  4. MySQL SUM Query är extremt långsam