Django:从数据库中安全删除未使用的 table
Django: safely deleting an unused table from database
在我的 django 应用程序中,我曾经利用基础 django rest 框架身份验证令牌 对用户进行身份验证。现在我已经切换到 Json Web Token,但是浏览我的 psql 数据库时,我注意到 table authtoken_token,用于存储 DRF 身份验证令牌,仍然存在。我想知道如何摆脱它。我考虑过 2 个选项:
- 通过迁移删除它:我认为这是继续进行的正确且安全的方法,但是在我的项目文件夹内的 migrations 目录中,我没有找到任何与令牌。仅与我的模型相关的内容;
- 直接从数据库中删除它可能是另一种选择,但我害怕弄乱 django 迁移(尽管它不应该再与其他 table 链接)
我必须澄清一下,我已经从我的 INSTALLED_APPS
中删除了 rest_framework.authtoken
要删除 authtoken 表,您可以按以下方式使用 django 的迁移命令:
python manage.py migrate authtoken zero
这将从 authtoken 应用还原所有迁移,有效地从数据库中删除表(只要这不破坏任何约束)。
zero 迁移可用于任何已安装的 django 应用程序 (see relevant django documentation)。
在 运行 零迁移后,您可以从 INSTALLED_APPS
中删除该应用
您可以选择第一个选项。您应该执行 3 个步骤来完成卸载 authtoken
从您的 Django 应用程序
- 从
INSTALLED_APPS
中删除 rest_framework.authtoken
,此操作将告诉您的 Django 应用不要从该模块中获取任何迁移文件
- 删除
authtoken_token
table,如果你愿意的话
- 在table
django_migrations
中找到应用名称authtoken
的记录,可以去掉。
注意:您的代码中出现了几个错误,因为 authtoken
模块已从您的 INSTALLED_APPS
中删除。我的建议是,在执行上述步骤之前先备份现有数据库
在我的 django 应用程序中,我曾经利用基础 django rest 框架身份验证令牌 对用户进行身份验证。现在我已经切换到 Json Web Token,但是浏览我的 psql 数据库时,我注意到 table authtoken_token,用于存储 DRF 身份验证令牌,仍然存在。我想知道如何摆脱它。我考虑过 2 个选项:
- 通过迁移删除它:我认为这是继续进行的正确且安全的方法,但是在我的项目文件夹内的 migrations 目录中,我没有找到任何与令牌。仅与我的模型相关的内容;
- 直接从数据库中删除它可能是另一种选择,但我害怕弄乱 django 迁移(尽管它不应该再与其他 table 链接)
我必须澄清一下,我已经从我的 INSTALLED_APPS
中删除了 rest_framework.authtoken要删除 authtoken 表,您可以按以下方式使用 django 的迁移命令:
python manage.py migrate authtoken zero
这将从 authtoken 应用还原所有迁移,有效地从数据库中删除表(只要这不破坏任何约束)。
zero 迁移可用于任何已安装的 django 应用程序 (see relevant django documentation)。
在 运行 零迁移后,您可以从 INSTALLED_APPS
您可以选择第一个选项。您应该执行 3 个步骤来完成卸载 authtoken
从您的 Django 应用程序
- 从
INSTALLED_APPS
中删除rest_framework.authtoken
,此操作将告诉您的 Django 应用不要从该模块中获取任何迁移文件 - 删除
authtoken_token
table,如果你愿意的话 - 在table
django_migrations
中找到应用名称authtoken
的记录,可以去掉。
注意:您的代码中出现了几个错误,因为 authtoken
模块已从您的 INSTALLED_APPS
中删除。我的建议是,在执行上述步骤之前先备份现有数据库