2011-08-02 5 views
0

나는 아이디어를 가지고 구현하기 전에 거기에 그것을 던져서 피드백을 얻거나 누군가 이미 수행 한 것을 발견하고 싶습니다.Django 테스트를 사용하여 데이터베이스의 데이터 분석 및 복구

다음과 같은 점이 있습니다. 저는 몇 달 동안 매우 빠르게 성장하고있는 여러 웹 사이트에서 쓰레기가 가득 채워져있는 웹 사이트를 운영하고 있습니다. 나는 데이터베이스를 가로 질러 실행하고 혼란을 정리할 스크립트를 설치할 것을 생각하고 있었다. 그래서, 제 아이디어는 Django Tests를 사용하는 것이 었습니다. 즉, 플래그를 올리는 대신 실제적으로 문제를 해결할 것이라는 점을 제외하고는, 정확하게 수행 할 수있는 작은 간단한 테스트를 많이 작성하는 방식이었습니다.

너희들은 어떻게 생각하니? 나는 이것이 어떤 이유로 작동하지 않는지 생각할 수 없다. 하지만 나는 장고에 노련한 사람이 아닙니다. 힘들겠습니까? 예측 가능한 문제는 무엇입니까?

감사합니다.

답변

3

아니요, 디자인 관점에서 구현 문제에 이르기까지 여러 가지 이유로 좋지 않습니다. 몇 가지만 언급하면 ​​다음과 같습니다.

  1. 테스트는 실제 데이터베이스에서 실행되지 않습니다. 별도의 데이터베이스가 처음부터 만들어집니다. 이걸 해킹해야 해.
  2. 일반적으로 db에 닿은 각 테스트 케이스는 트랜잭션에서 실행 된 다음 롤백됩니다. 그래서 결국 DB는 전혀 변하지 않았습니다. Ofc도 이것을 피할 수는 있지만 그게 중요한 것은 아닙니다.
  3. 시험은 당신이 무언가를 바꿀 때 항상 달려 있다고 가정된다. 그러나 당신이 말하는 과 같은 이슈는 일회성 수정 일뿐입니다 (대부분).

그러나 매우 간단하고 적절한 당신이 원하는 무엇을위한 해결책이 :

  1. 가 잘못/원치 않는 데이터를 발생 South
  2. 버그 수정을 설치는.
  3. 이미 존재하는 "손상된"데이터를 수정/정리하는 쓰기 data migration.
  4. 업데이트 및 마이그레이션.
  5. 반복 2-5

자, 이것은 단지 한 번 수정을 위해,하지만 대부분의 경우이 그것을 할 올바른 방법입니다. 데이터 수정과 함께 데이터 문제를 일으키는 버그를 수정합니다.

실제로 동일한 데이터 변경 기능이 두 번 이상 (주기적으로) 실행되어야하는 경우 custom management command (또는 간단한 실행 가능한 python 스크립트)을 만들고 cron에서 실행되도록 예약 할 수 있습니다.

관련 문제