IT/파이썬 2023. 5. 18.
Django - USE_TZ 설정에 따른 timezone.now() 리턴
timezone.now() 함수는 USE_TZ 설정이 True이면 현재 시간대의 datetime 개체를 반환하고, USE_TZ 설정이 False이면 UTC의 datetime 개체를 반환합니다. 만약 USE_TZ=True 인 경우에는 그냥 아래 timezone.now() 만 사용하면 될 것 같은데, 혹시나 USE_TZ=False 인 경우에 timezone 에 맞는 now() 값을 가져오고 싶다면, 아래 코드를 참고하셔도 좋을 것 같네요. 이 코드들은 모두 현재 시간의 datetime 개체를 가져오고 클라이언트의 시간대로 변환합니다. client_timezone = timezone.get_current_timezone() django_time = timezone.make_aware(datetime.datet..
IT/파이썬 2023. 5. 9.
파이썬 슬라이스 join 을 이용해서 주소 문자열 만들기
join 메소드는 파이썬의 문자열 메소드 중 하나로, 문자열 리스트를 하나의 문자열로 결합하는 데 사용됩니다. join 메소드는 결합할 문자열 리스트를 인수로 받고, 각 문자열 사이에 호출한 문자열을 삽입하여 하나의 문자열로 반환합니다. 예를 들어 다음과 같은 코드를 실행하면: words = ['apple', 'banana', 'cherry'] result = ', '.join(words) print(result) 다음과 같은 결과가 나올 것입니다: apple, banana, cherry 이 코드는 words 리스트의 각 요소 사이에 ', ' 문자열을 삽입하여 하나의 문자열로 결합합니다. 그럼 이제 주소 배열로 저장된 내용을 주소 문자열로 만들어 보자. " ".join(address_list[2:-1])..
IT/파이썬 2023. 5. 5.
Django manage.py my_command - 커스텀 명령어 만들기
가끔 배치 파일로 처리할 필요가 있다. python manage.py runserver 처럼 간단하게 자기 명령어를 만들어서 수행할 필요가 있다. 아주 잘 정리되어 있는 글이 있다. https://windybay.net/post/28/ Django 커스텀 manage.py 명령어 만들기 장고 프로젝트에서 manage.py 를 이용해 프로젝트 관련 명령을 실행할 때가 있다. 등등 테스트용 서버를 띄우거나 … windybay.net 나도, 빙 코파일럿을 이용해서 초안을 더 작성해 봤다. 엑셀 파일 명을 받아서 DB 에 입력하는 예제를 만들어 달라고 요청하고 정리해봤다. Django에서는 사용자가 커스텀 manage.py 명령어를 만들 수 있습니다. 이를 위해서는 Django 앱 내에 management/co..
IT/파이썬 2023. 5. 5.
파이썬 - 지도, 주소, 위도, 경도 등 지도 라이브러리 - GeoPy
파이썬은 강력하다. 지도 관련된 서비스를 하려면 필수적으로 GeoPy 정도는 있어야 대부분 구현이 가능하다. 먼저 홈페이지 방문해서 예제를 보면서 파악하는 것이 급선무! https://geopy.readthedocs.io/en/stable/#module-geopy.geocoders Welcome to GeoPy’s documentation! — GeoPy 2.3.0 documentation Different services have different Terms of Use, quotas, pricing, geodatabases and so on. For example, Nominatim is free, but provides low request limits. If you need to make more..
IT/파이썬 2023. 5. 4.
Python - UnicodeDecodeError: 'cp949' 에러 해결 방법
UnicodeDecodeError: 'cp949' 에러는 파일을 읽을 때 발생할 수 있는 문제입니다. 이 문제를 해결하는 방법으로는 파일을 열 때 인코딩을 지정해주는 것이 있습니다. open('파일경로', 'rt', encoding='UTF8') 와 같이 파일을 열어주면 왠만하면 다 해결이 됩니다. *) 실제 파일 인코딩에 맞추어서 사용하면 됩니다. 다른 방법으로는 텍스트 파일을 메모장으로 열어서 다른 이름으로 저장하고 인코딩을 ANSI로 저장하는 것도 있습니다. 이 외에도 인코딩 값을 변경해서 시도하거나 파일을 직접 열어 공백이 있는지 확인하고 공백을 제거하는 방법도 있습니다.
IT/파이썬 2023. 5. 4.
Django ORM - aggregation sum 결과가 0 인 결과 배제하기
Django ORM - aggregation sum 결과가 0 인 결과 배제하기 생각해보면 아주 쉽지만 안될지 될지 몰라서 그냥 해봤는데 되네 sum, avg, count 등을 수행한 결과가 0인 경우에 결과 값에서 빼고 싶다면 그냥 exclude 를 이용하면 된다. result_groupby_product_thismonth = ( target_summaryproductcount.values("product_name") .annotate(sum_count=Sum("count")) .values("product_name", "sum_count") .exclude(sum_count=0) ) 상품명으로 Group by 해서 sum을 구했는데, Sum 값이 0면 결과값에서 빼는 코드 참고용입니다. :) http..
IT/파이썬 2023. 5. 3.
Django ORM - Group by 사용해서 Count, Sum, Avg 구하기
Django ORM으로 Group by 필드 구현하는 방법은 아래 글을 이길 수가 없어요. 완전 잘 써놓으셔서 들어가서 읽고 감탄만 하시길!! 정리해 보면, 1. 먼저 Group by 할 필드를 정해서 values에 넣고 .values("필드") 2. 함수를 불러서 쓰고 .annotate(Count(), Sum(), Avg(), ...) 3. 보여줄 필드를 다시 정리하고 .values("필드", "필드", ...) 즉, values 를 2번 불러 쓰면 된다. [Django] ORM으로 Aggregation 함수와 Group by 사용 [Django] ORM으로 Aggregation 함수와 Group by 사용 쿼리에서 aggregation함수(count(), max(), first() 등등) 와 필요한 ..
IT/파이썬 2023. 5. 1.
Django - SQL group by 를 ORM 에서 구현하기
group by는 SQL에서 데이터를 그룹화하는 구문입니다. 장고 ORM에서는 values() 메소드를 사용하여 group by의 대상이 되는 컬럼을 지정할 수 있습니다. 이후 annotate() 함수로 집계된 데이터에서 집계 함수를 실행할 수 있습니다. 예를 들어, 다음과 같은 쿼리는 장고 ORM으로 다음과 같이 표현할 수 있습니다. # SQL SELECT name, COUNT(*) FROM test GROUP BY name; # Django ORM queryset = Test.objects.values('name').annotate(count=Count('*')) 위의 예제에서 values('name')은 GROUP BY name과 동일한 역할을 합니다. 이후 annotate(count=Count('..
IT/파이썬 2023. 5. 1.
Django - ORM aggregation 함수 설명과 예
앞서 살펴본 Group by 하는 결과에 많이 사용되는 집계함수에 대해서도 잠깐 살펴보자. annotate() 구문 안에서 자주 사용되는 aggregation funcion 은 아래 처럼 몇가지를 사용할 수 있다. 장고 ORM에서 사용할 수 있는 주요 집계 함수는 다음과 같습니다. Avg: 평균을 계산합니다. Count: 개수를 계산합니다. Max: 최대값을 계산합니다. Min: 최소값을 계산합니다. Sum: 합계를 계산합니다. 예제로 알아보면 가장 쉽다. 앞서 살펴본 동일한 Test 모델과 값이 있다고 가정한다. 2023.05.01 - [IT/파이썬] - Django - SQL group by 를 ORM 에서 구현하기 Django - SQL group by 를 ORM 에서 구현하기 group by는 S..
IT/파이썬 2023. 4. 28.
Django - Rest-framework API 서버 구현 with Django Ninja
Django Ninja의 주요 장점으로는 다음과 같은 것들이 있습니다 홈페이지에 많은 정보가 있겠죠? 일단은 방문 필수!! https://django-ninja.rest-framework.com/ Django Ninja Django Ninja - Fast Django REST Framework Django Ninja is a web framework for building APIs with Django and Python 3.6+ type hints. Key features: Easy: Designed to be easy to use and intuitive. FAST execution: Very high performance thanks to Pydantic and a django-ninja.rest-..
IT/파이썬 2023. 4. 26.
Django - response 객체에 쿼리스트링 추가
response 보낼때 쿼리 스트링 붙여서 보내고 싶다면, 아래 코드를 참고하세요. response = redirect("order_view", pk=order.id) response["Location"] += "?" + request.POST.get("querystring") return response Location 이라는 필드가 있는 지 어케 아는지? 이렇게 작성을 해도 되고, from django.http import HttpResponse def my_view(request): # Get the query string from the request query_string = request.GET.get("querystring") # Create the URL with the query stri..
IT/파이썬 2023. 4. 26.
장고 로그 - Nginx 웹서버, Gunicorn, Django
완전 공부용으로 아래 링크에서 글 저장 http://oniondev.egloos.com/v/10048149 양파개발자 SW의 블로그입니다^^ : nginx-gunicorn-django 구조 파악 및 로그 확인법 아래와 같은 구조로 되어있는 Request Handling Process 를 단계별로 한번 살펴보고 이해해 봅시다!!! 그리고!!! 각 단계별로 로그는 어떻게 보는지 살펴봅시다. 유저 Request → Nginx → Gunicorn → Django Ngin oniondev.egloos.com 유저 Request → Nginx → Gunicorn → Django Nginx Reverse Proxy Server 역할 로드 밸런싱 : traffic 분산 서비스 속도 개선: in-bound, out-bo..
IT/파이썬 2023. 4. 25.
파이썬 코드 웹 실행 사이트
파이썬 코드를 웹에서 실행할 수 있는 몇 가지 사이트가 있습니다. 다음은 그 중 일부입니다 Repl.it (https://repl.it/) 이 사이트에서는 파이썬 코드를 작성하고 실행할 수 있으며 다양한 언어를 지원합니다. PythonAnywhere (https://www.pythonanywhere.com/) 이 사이트에서는 파이썬 코드를 작성하고 실행할 수 있으며 웹 애플리케이션을 호스팅하는 기능도 제공합니다. Google Colab (https://colab.research.google.com/) 이 사이트에서는 Jupyter 노트북 형식으로 파이썬 코드를 작성하고 실행할 수 있습니다. 또한 머신러닝 및 데이터 분석과 관련된 다양한 라이브러리가 사전 설치되어 있습니다. Repl.it에서 코드를 공유 ..