我可以随意替换和还原db.sqlite3文件吗?

时间:2019-05-18 06:49:25

标签: python django sqlite django-models

我知道Django中的文件db.sqlite3保存着整个数据库以及其中的所有内容。保留所有项目文件,*.py文件,migrations文件是否安全,但是将db.sqlite3文件替换为其他文件是否安全。如果这两个db.sqlite3文件都在具有相同表,行,列和所有内容的相同数据库模型上工作,那么如果我换出该文件,它应该可以无缝工作。

我想将原始db.sqlite3文件复制到另一个目录中。然后,我想在项目中创建一个新的db.sqlite3文件。然后,我想使用新的数据库文件,并提供其他数据以测试项目如何使用它。然后,我想删除新的db.sqlite3文件,并想还原旧文件,并将其保存到另一个目录中。

那行得通吗?以及如何创建一个新的db.sqlite3文件(一种将测试数据放入的干净状态)?

此外,如果我在另一个服务器上构建项目,该如何将我的旧db.sqlite3文件也复制到那里,并恢复包含所有已保存数据的数据库呢?

基本上,我的问题的主要思想是:我们是否将db.sqlite3文件视为带有程序输入/输出数据的简单“文本文件”,可以自由互换?

2 个答案:

答案 0 :(得分:0)

是的,整个sqlite数据库包含在一个文件中,因此您可以使用django项目自由移动,替换和推送它(尽管不建议这样做),并且可以正常工作。

即使您有2个具有相同应用程序,相同模型结构和迁移的不同项目,也可以交换它们。

如果您删除db.sqlite3并想创建一个新数据库,只需运行python manage.py migrate,它将创建新数据库并应用所有迁移。

答案 1 :(得分:0)

整个数据库都位于.db文件中。当没有针对数据库的进程在运行时,您可以向任一方向安全地复制它。如果有针对该数据库的进程,则您可能会在同一目录中看到回滚日志文件或预写日志文件(如果数据库处于WAL模式),并且如果将它们抛在后面,则可能会丢失一些未决的事务。正确关闭数据库通常会导致这些文件消失。