#!/usr/bin/env python """ 기존 Person 데이터의 전화번호를 대시 없는 형태로 업데이트하는 스크립트 """ import os import sys import django import re # Django 설정 os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'A_core.settings') sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) django.setup() from B_main.models import Person def format_phone_number(phone): """전화번호에서 숫자만 추출하여 반환""" if not phone: return phone # 숫자만 추출 numbers = re.sub(r'[^0-9]', '', phone) # 11자리인 경우에만 반환 if len(numbers) == 11 and numbers.startswith('010'): return numbers elif len(numbers) == 10 and numbers.startswith('010'): return numbers return phone def update_phone_numbers(): """기존 Person 데이터의 전화번호를 대시 없는 형태로 업데이트""" print("=" * 60) print("Person 데이터 전화번호 업데이트") print("=" * 60) # 모든 Person 데이터 조회 persons = Person.objects.all() updated_count = 0 for person in persons: if person.연락처: old_phone = person.연락처 new_phone = format_phone_number(old_phone) if old_phone != new_phone: print(f"업데이트: {person.이름} - {old_phone} → {new_phone}") person.연락처 = new_phone person.save() updated_count += 1 else: print(f"변경 없음: {person.이름} - {old_phone}") else: print(f"전화번호 없음: {person.이름}") print(f"\n총 {updated_count}개의 전화번호가 업데이트되었습니다.") # 중복 확인 print("\n중복 전화번호 확인:") phone_counts = {} for person in Person.objects.all(): if person.연락처: phone_counts[person.연락처] = phone_counts.get(person.연락처, 0) + 1 duplicates = {phone: count for phone, count in phone_counts.items() if count > 1} if duplicates: print("중복된 전화번호 발견:") for phone, count in duplicates.items(): print(f" {phone}: {count}개") persons_with_phone = Person.objects.filter(연락처=phone) for person in persons_with_phone: print(f" - {person.이름} (ID: {person.id}, 회원가입상태: {person.회원가입상태})") else: print("중복된 전화번호가 없습니다.") if __name__ == '__main__': update_phone_numbers()