nnikolyaa
@nnikolyaa

Как закрыть все действующие соединения в sqlite3?

Каким образом можно закрыть ВСЕ соединения. Не единичное, а все соединения.
Нашёл с django, но она не работает.

from django import db
db.connections.close_all()
  • Вопрос задан
  • 746 просмотров
Решения вопроса 1
shurshur
@shurshur
Сисадмин, просто сисадмин...
Указанный код с django работает потому что django имеет сведения обо всех открытых средствами django коннектах и может их закрыть.

При прямом открытии баз, конечно же, никуда сведения о них не складываются. Чтобы получить подобное своими силами, можно при каждом открытии sqlite-базы класть коннект в list, а в нужный момент перебрать его и закрыть всё:

db_connections = []

db1 = sqlite3.connect('baza1.db')
db_connections.append(db1)
db2 = sqlite3.connect('area51.db')
db_connections.append(db2)

...

for db in db_connections:
  db.close()


PS: Некоторое время назад я написал скрипт, который генерирует sqlite-файлы пачками (кэш для САС.Планеты), и там есть специальный класс, который открывает новые файлы и закрывает лишние при достижении некоторого лимита: https://github.com/shurshur/tms2sqlite/blob/master...
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы