sql >> データベース >  >> RDS >> Mysql

ORM経由で挿入されたアイテムの削除に関するSQLAlchemyStaleDataErrorsqlalchemy.orm.exc.StaleDataError

    ヒントをあげられると思います この問題について。短いバージョンは次のとおりです。「問題を解決するには、データベース内のデータを手動で変更する必要があります。

    長いバージョン:SQLiteでも同様の問題が発生しました。次のテーブルをマッピングしました:

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

    その複合主キーを見ますか?どういうわけか、同じrecipe_title/product_titleのペアで2つの行を挿入することができました。このテーブルのSQLite側に単一の制約がないことを知って驚いた(主キーもフェレインキーもありません-それは単なるバニラテーブルでした)が、それはsqlalchemyのやり方であり、私のビジネス。

    次に、これら2つの行を含むpersitedオブジェクトを削除しようとすると、sqlalchemyはその制約に違反していることを確認し、「StaleDataError」をスローしました。最後に、SQLiteテーブルから1つの重複行を手動で削除する必要がありました。



    1. MySqlワークベンチのCHECK制約

    2. INSERTがストアド関数でうまくいったかどうかを確認するにはどうすればよいですか?

    3. MySQLラウンドフロートが予想よりもはるかに多いのはなぜですか?

    4. XMLからのデータのクエリ