我知道Django中的文件db.sqlite3
保存着整个数据库以及其中的所有内容。保留所有项目文件,*.py
文件,migrations
文件是否安全,但是将db.sqlite3
文件替换为其他文件是否安全。如果这两个db.sqlite3
文件都在具有相同表,行,列和所有内容的相同数据库模型上工作,那么如果我换出该文件,它应该可以无缝工作。
我想将原始db.sqlite3
文件复制到另一个目录中。然后,我想在项目中创建一个新的db.sqlite3
文件。然后,我想使用新的数据库文件,并提供其他数据以测试项目如何使用它。然后,我想删除新的db.sqlite3
文件,并想还原旧文件,并将其保存到另一个目录中。
那行得通吗?以及如何创建一个新的db.sqlite3
文件(一种将测试数据放入的干净状态)?
此外,如果我在另一个服务器上构建项目,该如何将我的旧db.sqlite3
文件也复制到那里,并恢复包含所有已保存数据的数据库呢?
基本上,我的问题的主要思想是:我们是否将db.sqlite3
文件视为带有程序输入/输出数据的简单“文本文件”,可以自由互换?
答案 0 :(得分:0)
是的,整个sqlite数据库包含在一个文件中,因此您可以使用django项目自由移动,替换和推送它(尽管不建议这样做),并且可以正常工作。
即使您有2个具有相同应用程序,相同模型结构和迁移的不同项目,也可以交换它们。
如果您删除db.sqlite3
并想创建一个新数据库,只需运行python manage.py migrate
,它将创建新数据库并应用所有迁移。
答案 1 :(得分:0)
整个数据库都位于.db文件中。当没有针对数据库的进程在运行时,您可以向任一方向安全地复制它。如果有针对该数据库的进程,则您可能会在同一目录中看到回滚日志文件或预写日志文件(如果数据库处于WAL模式),并且如果将它们抛在后面,则可能会丢失一些未决的事务。正确关闭数据库通常会导致这些文件消失。