개발(24)
-
Excel 디자인 유지 Python으로 XML 단위로 데이터 병합하기
엑셀(Excel) 작업 중 가장 자주 맞닥뜨리는 고민 중 하나는 바로 '디자인이 유지된 상태로 파일을 병합하는 것'입니다. 특히 광고 보고서나 마케팅 데이터를 매월 정리해야 하는 경우, 기존 템플릿의 디자인이 흐트러지지 않고 데이터를 정확히 입력하여 보고서를 생성하는 것이 중요합니다.이번 포스팅에서는 Python을 이용하여 두 개의 Excel 파일을 XML 단위에서 병합하여, 기존 엑셀 디자인을 깨지 않고 데이터를 합치는 방법에 대해 소개하겠습니다.왜 XML 단위로 병합해야 하나?엑셀(xlsx) 파일은 사실 내부적으로 여러 개의 XML 파일로 구성된 zip 압축 파일입니다. 일반적인 방식으로 엑셀 파일을 수정하면 기존 디자인 요소(서식, 표, 스타일 등)가 손상될 수 있지만, XML 레벨에서 데이터를 교..
2025.03.07 -
Django Logging 에러 해결 방법
Django Logging 에러 해결 방법Django 프로젝트에서 로깅을 설정하는 과정에서 KeyError: 'ip' 오류가 발생하는 경우가 있다. 해당 오류의 원인을 분석하고 해결하는 방법을 정리하였다.에러 발생 원인1. LogRecord Attributes 미존재 항목 추가Django의 기본 LogRecord에는 ip, user, method 등의 속성이 존재하지 않는다. 따라서 로깅을 설정할 때 추가적인 속성을 포함하려고 하면 KeyError가 발생할 수 있다.2. django.request 로거 중복 호출Django는 기본적으로 django.request 로거를 내부적으로 사용하고 있다. 따라서, 미들웨어에서 동일한 로거를 사용하면 예상치 못한 동작이 발생할 수 있다.에러 해결 방법1. djang..
2025.03.04 -
DRF Spectacular에서 Swagger 파라미터 순서 변경하기
Django 프로젝트에서 drf-spectacular을 사용해 Swagger 문서를 작성할 때, OpenApiParameter의 순서가 내가 작성한 순서가 아니라 name 기준으로 정렬되는 문제가 있었습니다. 이를 해결하는 과정을 정리해 보겠습니다.1. 문제 상황Swagger 문서에서 API의 파라미터는 기본적으로 name 기준으로 정렬됩니다. 하지만 사용자가 원하는 대로 순서를 지정하고 싶을 때가 있습니다. 예를 들어, 아래처럼 파라미터를 정의했다고 가정해 보겠습니다.from drf_spectacular.utils import OpenApiParameter, extend_schema@extend_schema( parameters=[ OpenApiParameter("user_id", t..
2025.02.06 -
Django 윈도우 마이그레이션 파일 일괄 제거
Django 마이그레이션 파일은 데이터베이스 스키마의 변화를 관리하는 중요한 역할을 합니다. 그러나 프로젝트가 발전함에 따라 불필요한 마이그레이션 파일이 쌓이게 되고, 이는 관리의 복잡성을 증가시킬 수 있습니다. 따라서 이러한 파일을 일괄적으로 제거하는 방법에 대해 알아보겠습니다.Django 마이그레이션 파일의 중요성Django에서 마이그레이션 파일은 데이터베이스의 구조를 정의하고 변경하는 데 필수적입니다. 각 마이그레이션 파일은 특정 모델의 변경 사항을 기록하며, 이를 통해 데이터베이스와 코드 간의 일관성을 유지할 수 있습니다. 하지만 시간이 지나면서 불필요한 마이그레이션 파일이 쌓이게 되면, 프로젝트의 유지보수에 어려움을 겪을 수 있습니다. 따라서 주기적으로 마이그레이션 파일을 정리하는 것이 필요합니..
2024.10.21 -
Django에서 대용량 데이터 처리하기: bulk_create 메서드 활용하기
데이터베이스에 1000개 이상의 Row를 insert 해야하는 상황이 발생할 때, Django의 create나 update_or_create 등을 사용해서 데이터를 저장하면 시간이 상당히 걸릴 수 있습니다. 이러한 방법은 많은 수의 DB 쿼리를 발생시켜 데이터베이스에 과부하를 줄 수 있으며, 이로 인해 서버에 장애가 발생할 수도 있습니다. 대용량 데이터를 처리할 때, DB에 보내는 쿼리 수를 줄이는 것만으로도 속도 개선을 크게 시킬 수 있습니다. Django에서는 이를 위해 bulk_create 메서드를 제공합니다. 예를 들어, 아래의 코드는 1000번의 쿼리를 실행하여 1000개의 객체를 생성합니다: for i in range(1000): new_object = MyModel.objects.create..
2024.01.16 -
IPv4가 주소 고갈 문제를 해결한 여러가지 방법들
IPv4 주소 고갈 문제는 여러 가지 방법으로 해결하기 위해 노력되어 왔습니다. 그러나 이러한 노력들은 일시적인 해결책에 불과하며, 본질적인 문제에 대한 근본적인 해결책이 되지 못했습니다. 아래는 몇 가지 주요한 대응 방안들입니다. 1. NAT (Network Address Translation): NAT는 개별 디바이스에 고유한 사설 IP 주소를 할당하고, 이를 통합적인 공인 IP 주소로 변환해 외부와 통신하는 방식입니다. 이를 통해 특정 네트워크 내에서는 한정된 수의 공인 IP 주소를 사용하여 여러 디바이스가 인터넷에 접속할 수 있게 됩니다. 하지만 이는 주소 변환이라는 추가적인 복잡성을 가져오며, 특히 peer-to-peer 통신과 같은 일부 응용프로그램에서 문제를 일으킬 수 있습니다. 2. IPv..
2024.01.01