Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 23, 2011 15:22:44

udav
От:
Зарегистрирован: 2010-05-30
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

Использую QtCore.QTemporaryFile для создания файла, в котором создается БД sqlite. Для работы с БД использую sqlalchemy, но после завершения программы временный файл не удаляется с диска, при попытке удалить “вручную” с помощью os.remove(flName) выдает ошибку “Файл занят другим процессом”
Возможно sqlalchemy не освобождает какие-то ресурсы, несмотря на

session.connection().close()
session.close_all()
Кто - нибудь может подсказать где что-то не так?
Windows XP



Отредактировано (Янв. 23, 2011 15:39:40)

Офлайн

#2 Янв. 23, 2011 17:00:26

roku151
От:
Зарегистрирован: 2010-06-10
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

убей все процессы python в диспетчере задач.



Офлайн

#3 Янв. 23, 2011 17:53:24

udav
От:
Зарегистрирован: 2010-05-30
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

roku151
убей все процессы python в диспетчере задач.
Конечному пользователю вряд ли понравится такое решение.
А как это сделать в самой программе?



Офлайн

#4 Янв. 23, 2011 18:28:59

roku151
От:
Зарегистрирован: 2010-06-10
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

может стоит создавать бд в памяти.

# in-memory database
e = create_engine('sqlite://')



Отредактировано (Янв. 23, 2011 18:35:07)

Офлайн

#5 Янв. 23, 2011 18:38:08

udav
От:
Зарегистрирован: 2010-05-30
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

roku151
а зачем конечному пользователю нужно будет удалять дб?)
может стоит создавать бд в памяти?
БД создается во временном файле, чтобы в случае аварийного завершения программы - отключения электричества, зависания системы, при следующем запуске программы можно было восстановить данные.
При нормальном завершении программы, данные переносятся в обычный файл, а временный должен
удаляться.



Офлайн

#6 Янв. 23, 2011 18:50:55

roku151
От:
Зарегистрирован: 2010-06-10
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

from sqlalchemy.pool import NullPool
to_engine = create_engine('sqlite:///%s' % temp_file_name, poolclass=NullPool)



Офлайн

#7 Янв. 23, 2011 19:11:20

udav
От:
Зарегистрирован: 2010-05-30
Сообщения: 43
Репутация: +  0  -
Профиль   Отправить e-mail  

При использовании sqlalchemy + sqlite временные файлы не удаляются.

Спасибо - заработало!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version