使用Django测试分析和修复数据库的数据

时间:2011-08-02 02:55:33

标签: database django django-testing

我有一个想法,在实施之前,我想把它扔出去获得一些反馈,甚至发现有人已经做过。

事情就是这样:我有一个运行数据库的网站,这个数据库在几个月内发展得非常迅速,并且在发生的几个问题上,充满了大量的垃圾。我正在考虑放置一些脚本来运行数据库并清理混乱。因此,我的想法是使用Django测试,以一种方式可以编写一大堆简单的小测试,除此之外,实际上可以解决问题,而不是提升标志。

你们觉得怎么样?我无法想出为什么这不起作用。但我不是那种在Django中经验丰富的人。会难吗?任何可预见的问题?

谢谢!

1 个答案:

答案 0 :(得分:3)

不,从设计角度到实施问题,从很多方面来看,这是个坏主意。仅举几例:

  1. 测试不在实际数据库上运行。从头开始为它创建一个单独的数据库。你必须破解这个。
  2. 通常,每个触摸数据库的测试用例都会在事务中运行,然后回滚。所以最后DB根本没有改变。你也可以避免这种情况,但这不是重点。
  3. 当您更改某些内容时,应该始终运行测试。但是你所讨论的问题应该只能一次性修复(大多数情况下)。
  4. 但是,对于您想要做的事情,有一个非常简单和适当的解决方案:

    1. 安装South
    2. 修复导致错误/不需要的数据的错误。
    3. 编写data migration修复/清理已存在的“损坏”数据。
    4. 更新并迁移。
    5. 重复2-5
    6. 现在,这仅适用于一次性修复,但在大多数情况下,这是正确的方法。您修复了导致数据问题的错误以及修复数据。

      如果您真的需要相同的数据更改功能来运行多次(定期),那么您可以创建一个custom management command(或只是一个简单的可执行python脚本)并安排它从cron运行。