Как перенести данные из одной базы данных в другую в Django?

Вопрос: Я воссоздаю веб-приложение в Django, которое было запущено на сервере, но оно было прекращено, к счастью, я сделал резервную копию всего кода. Моя проблема связана с базой данных, но я не знаю, как перенести все данные из старого веб-приложения базы данных db.sqlite3 Django в новое. Я нашел аналогичный вопрос, как мой Django: передача данных

Вопрос:

Я воссоздаю веб-приложение в Django, которое было запущено на сервере, но оно было прекращено, к счастью, я сделал резервную копию всего кода. Моя проблема связана с базой данных, но я не знаю, как перенести все данные из старого веб-приложения базы данных db.sqlite3 Django в новое.

Я нашел аналогичный вопрос, как мой Django: передача данных из одной базы данных в другую, но пользователь хотел перенести данные из определенных столбцов, потому что их models.py из старой и новой баз данных были немного разными. В моем случае мои models.py из старой и новой баз данных одинаковы.

альтернативы

  1. Я использую DB Browser for SQLite для изучения содержимого старой базы данных, и я мог бы вручную добавить каждую строку в администрацию Django, но это займет слишком много времени.
  2. Я мог бы скопировать старый db.sqlite и заменить его в новом веб-приложении, потому что файл models.py остается тем же, но это решение не подходит IMO, это решение является грубым, и я думаю, что это противоречит хорошей практике программного обеспечения.

Как перейти к передаче данных из старой базы данных в новую?

Лучший ответ:

Я смог сделать некоторые незначительные трюки, чтобы решить мою проблему, потому что нет простой функции, которая позволяет передавать все ваши данные из двух баз данных sqlite в Django. Вот трюк, который я сделал:

  1. Загрузите sqlite db browser для изучения и экспорта содержимого вашей старой базы данных в .csv файл. Откройте базу данных с помощью sqlite db browser и нажмите на tables и вы увидите все свои таблицы, затем щелкните правой кнопкой мыши по любому из них и нажмите на export as a csv file опции export as a csv file для создания файла csv (name_of_your_csv_file.csv). Другой альтернативой является использование sqlite3.exe чтобы открыть вашу базу данных в cmd или powershell а затем выполнить экспорт с помощью:

    .tables #this lets you explore your available tables headers on mode csv output name_of_your_csv_file.csv

2. Есть два варианта до этого момента: вы можете либо сразу вставить все записи в свою новую базу данных, либо вы можете удалить существующие таблицы из новой базы данных, а затем воссоздать их и импортировать .csv файл. Я пошел на опцию drop, потому что было выполнено более 100 записей для миграции.

# sqlite3 # check the structure of your table so you can re-create it .schema <table_name> #the result might be something like CREATE TABLE IF NOT EXISTS «web_app_navigator_table» («id» integer NOT NULL PRIMARY KEY AUTOINCREMENT, «ticket» varchar(120) NOT NULL); #drop the table drop table web_app_navigator_table #re-create the table create table web_app_navigator_table(id integer not null primary key autoincrement, ticket varchar(120) not null); #do the import of the csv file .import C:/Users/a/PycharmProjects/apps/navigator/name_of_your_csv_file.csv table_name_goes_here

Возможно, вы заметили ошибку, такую как csv:1: INSERT failed datatype mismatch но это указывает на то, что первая строка вашего файла csv не была вставлена, поскольку в нем содержатся заголовки экспортированных данных из вашей старой базы данных.

Ответ №1

Это похоже на однократную копию одного db на другой. Я не вижу, как это идет вразрез с хорошей практикой программного обеспечения, если вы не должны часто копировать этот db. Я делал это раньше, когда перенося серверы, и это не вызывает никаких проблем, предполагая, что два экземпляра приложения – это одна и та же сборка.

Оцените статью
Добавить комментарий