如何在Django中将数据从一个数据库传输到另一个数据库?

如何在Django中将数据从一个数据库传输到另一个数据库?,django,django-models,sqlite,Django,Django Models,Sqlite,我正在Django中重新创建一个web应用程序,该应用程序在服务器上运行,但被终止。幸运的是,我备份了所有代码。我的问题来自数据库,因为我不知道如何将所有数据从旧的db.sqlite3 Django数据库web应用程序传输到新的数据库web应用程序中 我发现了一个与我类似的问题,但用户希望从特定列传输数据,因为他们的models.py与新旧数据库略有不同。在我的例子中,新旧数据库中的models.py是相同的 替代品 我正在使用SQLite的DB浏览器浏览旧数据库的内容,我可以手动将每一行添加到

我正在Django中重新创建一个web应用程序,该应用程序在服务器上运行,但被终止。幸运的是,我备份了所有代码。我的问题来自数据库,因为我不知道如何将所有数据从旧的db.sqlite3 Django数据库web应用程序传输到新的数据库web应用程序中

我发现了一个与我类似的问题,但用户希望从特定列传输数据,因为他们的models.py与新旧数据库略有不同。在我的例子中,新旧数据库中的models.py是相同的

替代品

我正在使用SQLite的DB浏览器浏览旧数据库的内容,我可以手动将每一行添加到Django管理中,但这将花费我太多的时间。 我可以复制旧的db.sqlite并在新的web应用程序中替换它,因为models.py文件保持不变,但是这个解决方案不适合IMO,这个解决方案很粗鲁,我认为它违背了软件的良好实践。
如何将数据从旧数据库传输到新数据库

这似乎是一个db到另一个db的一次性拷贝。我不认为这与良好的软件实践背道而驰,除非您必须经常复制这个数据库。我以前在迁移服务器时就这样做过,假设应用程序的两个实例是同一版本,这不会导致任何问题。

我能够做一些小技巧来解决我的问题,因为没有一个简单的功能允许您从Django中的两个sqlite数据库传输所有数据。以下是我的技巧:

下载sqlite db浏览器,以在.csv文件中浏览和导出旧数据库的内容。使用sqlite db browser打开数据库,点击表格选项,您将看到所有表格,然后右键单击其中任何一个表格,点击导出为csv文件选项,生成您的csv文件的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文件。因为有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 DISMATCH,但这表示未插入csv文件的第一行,因为它包含从旧数据库导出的数据的标题

只需确保数据库在.gitignore中。这得到了我的支持,因为所有csv和序列化的东西都是一个巨大的痛苦