vendredi 23 décembre 2016

pymysql - Clear a table for testing

I'm looking to write tests for my application. I would like to work with a clean database for all my tests. For various reasons, I cannot create a separate test database.

What I currently do is run everything in a transaction and never commit to the db. However some tests read from the db, so I'd like to delete all rows at the start of the transaction and start from there.

The problem I am running into is with foreign key constraints. Currently I just go through each table and do

cursor.execute("DELETE FROM %s" % tablename)

which gives me

IntegrityError: (1451, u'Cannot delete or update a parent row: a
foreign key constraint fails (`testing`.`app_adjust_reason`,
CONSTRAINT `app_adjust_reason_ibfk_2` FOREIGN KEY (`adjust_reason_id`)
REFERENCES `adjust_reason` (`id`))')

Aucun commentaire:

Enregistrer un commentaire