Django를 사용하여 DVC를 통해 데이터베이스 변경을 쉽게 이동할 수 있도록하는 방법
-
22-07-2019 - |
문제
개요
나는 Django에서 웹 사이트를 작성하고 있습니다. 사람들이 플랫 페이지를 추가하기 시작하고 관리자에 일부 설정을 설정하도록해야합니다. 정보는 클라이언트에서 나오기 때문에 이러한 변경 사항은 결정적이어야합니다. 그러나 나는 또한 백엔드를 개발하고 있으며, 따라서 테이블을 만들고 마이그레이션 할 것입니다. 나는 이러한 변화를 허브로 밀어 넣습니다.
도구
문제
Lappy에서 온라인 사이트에서 데이터베이스 변경을받을 수있는 방법과 데이터베이스 변경 사항을 라이브 사이트로 푸시하여 최소한의 조정이 필요한 방법은 무엇입니까? 나는 git 후크에 익숙하기 때문에 그 옵션이 작동 중입니다.
부록:
관리자를 통해 어떤 테이블을 수정할 수 있는지 알고 있다고 생각합니다. 실제로 많은 겹치는 것은 안됩니다. 내가 더 고려할 때, 위험은 실제로입니다 나 그들이 한 일을 덮어 쓸 수있는 데이터를 푸시합니다.
감사.
해결책
스키마 변경을 서버로 연결하려면 South를주의 깊게 사용하십시오. 데이터가있는 테이블을 수정하면 스키마 마이그레이션을 모두 작성하고 필요한 경우 데이터 마이그레이션을 작성하여 데이터 감각을 보존하십시오.
업데이트 된 데이터를 다시 가져 오기 위해 (중요하지는 않지만 개발 중에 최신 테스트 데이터로 작업하는 것이 좋을 수도 있음) 일반적으로 Django Fixtures와 DempData 및 LoadData 명령을 사용합니다. . 고정물을 버리고 repo에 커밋 한 다음 끝에로드 데이터를 제공하는 것은 쉽습니다.
git 후크를 사용 하여이 중 일부를 자동화하려고 시도 할 수 있지만 자동화를 원한다면 대신 직물과 같은 것을 시도하는 것이 좋습니다. 이 물건의 대부분은 푸시/당기는 때마다 실행할 필요가 없습니다 (특히, 나는 일반적으로 자주 새로운 데이터 고정물을 버리고 싶지 않습니다).
다른 팁
아마도 남쪽을 살펴 봐야 할 것입니다.
당신이 일종의 연속 통합 시스템을 수행하고 있다면 남쪽으로 트리거하는 git 훅을 만들 수있을 것 같습니다.
그렇지 않으면, 푸시 할 때마다 마이그레이션 단계를 직접 수동으로 실행해야합니다. "사이트가 유지 보수중인"메시지를 올리는 것을 잊지 마십시오. ;)
나는 당신이 사용하는 것이 좋습니다 MK 테이블-동시 라이브 서버에서 랩톱으로 변경을 당기려면 MK-Table-Sync는 많은 매개 변수를 사용하여 사용 하여이 프로세스를 자동화 할 수 있습니다. 구조. 기본적으로 서버에서 가져올 각 태블릿에서 MK-Table-Sync를 실행하는 패브릭 기능을 만듭니다.
이것은 Dabatase가 풀로 쓰여질 것이기 때문에 자신을 변화시킬 수 없다는 것을 의미합니다.
라이브 데이터베이스에 대한 유일한 변경 사항은 South를 사용하는 것입니다. 코드를 서버로 푸시 한 다음 실행합니다. 마이그레이션 데이터베이스 스키마를 업데이트합니다.