Я пишу свою первую программу SQLAlchemy (0.6.8) / Python (2.7.1), сидящую поверх SQLite (я думаю, 3.7.6.3), работающую в Windows Vista.
InЧтобы выполнить модульное тестирование, я указываю SQLite на тестовую базу данных, и мои скрипты модульного теста регулярно удаляют файл базы данных, поэтому я постоянно работаю с известным начальным состоянием.
Иногда моймодульные тесты не могут удалить файл:
WindowsError: [Error 32] The process cannot access the file because it is being used by another process
Единственный процесс, который использует файл, - это модуль модульного тестирования.Ясно, что некоторые из моих завершенных модульных тестов не снимают блокировку, что мешает следующему модульному тесту в том же процессе удалить файл.
Я искал все места, где создал сеанс, иподтвердил, что существует соответствующий session.commit () или session.rollback ().
Я искал все вызовы session.commit () и session.rollback () в своем коде и сразу после этого добавил вызов session.close (), пытаясь явно снять любые транзакционные блокировки, ноэто не помогло.
Есть ли секреты, обеспечивающие удаление оставшихся блокировок в конце транзакции, чтобы разрешить удаление файла?