@Stepan47
Я программист, преимущественно на Python, Java, С#

Как прочитать и записать файл .db без потерь?

Есть программа, с помощью нее можно записать информацию в базу данных sqlite3. И вот мне нужно соединить 2 компьютера, чтоб они передавали друг другу эту базу данных, это я уже сделал, компьютеры умею передавать данные, но вот проблема, при моей попытке прочесть файл .db, а потом его сохранить, он теряет некоторую информацию. Я его уже открывал в кодировке "charmap", и в utf-8, но ничего не менялось, вот мой маленький код чтения-записи:
file = open("info.db","r",encoding="charmap")
file_read = file.read().encode("charmap")
file.close()
file = open("new_info.db","w",encoding="charmap")
file.write(bytes(file_read).decode("charmap"))
file.close()

Файл на выходе и весит больше. А когда я его пытаюсь использовать как полноценную базу данных вылетают ошибки о не нахождении таблиц в базе данных.
  • Вопрос задан
  • 193 просмотра
Решения вопроса 1
@sidorovmax
Копирование существующей БД 'existing_db.db' в другой файл 'backup.db'.
import sqlite3

def progress(status, remaining, total):
    print(f'Copied {total-remaining} of {total} pages...')

con = sqlite3.connect('existing_db.db')
bck = sqlite3.connect('backup.db')
with bck:
    con.backup(bck, pages=1, progress=progress)
bck.close()
con.close()
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@bacon
from shutil import copyfile

PS а еще лучше научиться гуглить, а то так дятлом и останешься
ЗЫ хотя и через read можно, но для начала узнать что такое binary mode https://docs.python.org/3/library/functions.html#open
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы