【问题标题】:Verify database integrity using Django使用 Django 验证数据库完整性
【发布时间】:2020-07-08 11:18:55
【问题描述】:

有一个复杂的应用程序,其后端由 Django 提供支持。它包含多对一多对多和https://django-polymorphic.readthedocs.io/en/stable/

使用 Django 迁移更新数据库模型。

问题

现有数据库的非常复杂的迁移失败。还有外键约束相关的问题类似:

错误:在表“foo”上插入或更新违反了外键约束“D286496390ec910156ccc566ec44e73f” 详细信息:表“bar”中不存在键 (bar_id)=(123)。

也就是说,有一条记录引用了数据库中不存在的记录。

问题

是否有可能以某种方式使用 Django 迭代数据库中的每个对象并验证它不包含“损坏”记录(引用不存在的记录)?

【问题讨论】:

    标签: django database


    【解决方案1】:

    简答

    是的,您可以使用 django shell ./manage.py shell 来迭代您的模型并进行检查。


    长答案

    $ ./manage.py shell
    >>> from your_app.models import MyCoolModel
    >>> for item in MyCoolModel.objects.all():
    ...     if item.foreign_field < 0: # do the control here
    ...         # fix the non valid.
    ...         ...
    
    

    【讨论】:

    • 寻找一种通用的方法来迭代数据库中的每个模型(以及每个模型的记录)并验证没有违反任何外键约束(指向不存在的记录)。
    猜你喜欢
    • 2017-10-27
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 2017-11-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-19
    相关资源
    最近更新 更多