【问题标题】:How to clean Django database after install and uninstall packages?安装和卸载软件包后如何清理 Django 数据库?
【发布时间】:2014-02-09 02:11:33
【问题描述】:

我刚刚了解到在 Django 中安装任何包后我应该更加小心。这是我应该在安装新插件时在迁移或同步数据库之前转储我的数据库(或简单地复制数据库文件)。

现在,为时已晚。我已经安装和删除了几个包(pip install packagepython manage.py migrate),我想清理或清除我的数据库,所以我摆脱了不再使用的表和字段。

是否有任何方法可以搜索和/或删除INSTALLED_APPS 不再使用的字段和表格?

似乎可以遍历所有INSTALLED_APPS models.py 文件并将它们与数据库的当前状态进行比较。另一种选择是生成一个全新的数据库并将其与旧数据库进行比较。

【问题讨论】:

    标签: django django-models django-south django-syncdb


    【解决方案1】:

    我认为你有两个选择:

    1 - 使用 sqlclear django 命令。

        $ python manage.py sqlclear appToUninstall > droppingApp.sql
    
       BEGIN;
    
       DROP TABLE "appToUninstall_table";
    
       ...
    
       COMMIT;
    

    并在您的数据库中手动执行查询。

    2 - 也许检查 South API 并创建自己的 Django 命令

    from south.db import db
    
    ...
    
    db.delete_table(Table, cascade=True)
    

    【讨论】:

    • 谢谢,我尝试了第一个,它适用于表格但没有更改字段。在后一种情况下,它将删除属于另一个插件的完整表,而不是仅删除插件添加到现有表中的列。
    • 我安装了 South。我看看我能不能想出点什么来。谢谢
    • aah!!,好的,对于字段修改,您需要安装 South。例如,如果您在名为“Totos”的应用程序的任何模型中添加或删除字段,则需要迁移新更改: >> python manage.py schemamigration Totos --auto >> python manage.py migrate Totos
    • 请..获取更多信息..参见南方文档:south.readthedocs.org/en/latest Django 将在下一个版本 (1.7) 中集成架构迁移。
    • 问题是我没有添加那些字段。我安装的应用程序添加的字段。例如,表totos 存在是因为我安装时创建了app1。然后,我安装了app2,它将列/字段tico 添加到表totos。问题是当我删除 app2 但列 tico 仍然存在。此外,tico 被创建为not null,所以我不断收到我手动修复的错误。不幸的是,我安装的应用程序不止一个。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 2012-10-22
    • 2013-10-06
    • 2018-07-27
    • 2013-11-01
    • 1970-01-01
    相关资源
    最近更新 更多