TGViewer
Zen of Python Zen of Python @zen_of_python · 18.8K subscribers
Post #5071 666
Как сделать бэкап работающей SQLite через Python

Просто скопировать файл активной базы рискованно. Во время копирования страницы могут изменяться, а при WAL часть данных находится в отдельном журнале.

Python предоставляет доступ к SQLite Online Backup API через Connection.backup(). Метод вызывают у источника и передают ему соединение с приёмником:

import sqlite3
from contextlib import closing

with closing(sqlite3.connect("app.db")) as src:
with closing(sqlite3.connect("backup.db")) as dst:
src.backup(dst)


SQLite согласует копирование с работой базы. Получившаяся копия самостоятельна: следующие записи в исходник в неё не попадут.

Здесь closing нужен для закрытия соединений: обычный with connection управляет транзакцией, но не закрывает соединение. После бэкапа проверьте восстановление и чтение данных.

#python #sqlite
  • ❤ 1
More from @zen_of_python
  1. Oct 16, 2026Что делать с данными? 💬 Строить отчёты. А ещё, например: ✅находить закономерности в больш…
  2. Oct 16, 2026UTF-8 по умолчанию не перекодирует старые файлы В Python 3.15 текстовый ввод-вывод по умол…
  3. Oct 16, 2026Python обработал 7,6 ГБ JSON за 0,12 секунды Здесь интересно, куда уходило время. Дэниел Л…
  4. Oct 16, 2026Что проверить перед переходом на SQLAlchemy 2.1 Обновление зависимости может поменять драй…
  5. Oct 15, 2026Почему subprocess с PIPE может зависнуть Дочерний процесс пишет в stdout, родитель вызывае…
  6. Oct 15, 2026Как запустить тесты самого Django через uv Хотите исправить баг в Django? Сначала понадоби…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →