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에서 코드를 공유 ..
IT/파이썬 2023. 4. 18.
Django ORM - Q 객체, F 객체 사용
django orm에서 Q 객체를 사용하면 OR/AND 조건을 적용할 수 있습니다. Q 객체는 복잡한 조건식을 표현할 수 있도록 도와주는 객체로, 논리 연산자 (|, &, ~)를 사용할 수 있습니다1. 예를 들어, filter(Q(name=“lee”) | Q(age__gt=20))는 name이 "lee"이거나 age가 20보다 큰 레코드를 필터링합니다1. Q 객체는 filter(), exclude(), get() 등의 메소드에 인자로 전달할 수 있습니다2. Q 객체끼리는 연결하여 사용할 수 있습니다2. 예를 들어, filter(Q(name=“lee”) & Q(age__gt=20), Q(gender=“M”))는 name이 "lee"이고 age가 20보다 크며 gender가 "M"인 레코드를 필터링합니다2...
IT/파이썬 2023. 4. 18.
Django ORM - 중복 레코드 제거 방법
django orm에서 중복 레코드를 삭제하는 방법은 다음과 같습니다. 중복 레코드를 삭제하려면 먼저 중복 조건을 정의해야 합니다. 예를 들어, name과 age 필드가 모두 같은 레코드를 중복으로 간주한다면, filter(name__exact=F(‘age’))와 같이 filter() 함수에 Q 객체나 F 표현식을 사용할 수 있습니다 중복 조건에 맞는 레코드들의 id를 values_list() 함수로 추출합니다. 이때 flat=True 옵션을 주면 id 값들이 리스트 형태로 반환됩니다. 예를 들어, ids = Person.objects.filter(name__exact=F(‘age’)).values_list(‘id’, flat=True)와 같이 사용할 수 있습니다. 중복 조건에 맞는 레코드들 중에서 하나..
IT/파이썬 2021. 11. 17.
파이썬 라이브러리 패키지 업데이트 방법 - 한꺼번에 여러개
pip install 로 설치된 파이썬 라이브러리를 업데이트 하는 방법을 알아보자. 물론 아주 쉽다 --upgrade 만 붙여주면 끝이다 파이썬 패키지 업데이트 먼저 현재 설치된 패키지 라이브러리를 다들 아시는 바와 같이 하나의 파일로 쫙 만들어 보자. 물론 output 파일 명은 꼭 requirements.txt 일 필요는 없지만 거의 모든 프로젝트들이 이렇게 쓰고 있으니 그냥 쓰자. pip freeze > requirements.txt 이 파일을 열어보면 아래 처럼 막 나열되어 있다. dateparser==1.0.0 defusedxml==0.7.1 Django==3.2 django-debug-toolbar==3.2.1 django-ninja==0.16.1 여기서 "==" 부분을 업그레이드 업데이트를 ..
IT/파이썬 2021. 8. 19.
CircuitPython - UART read / write 시리얼 읽고 쓰기
물론 Adafruit 페이지에 가면 가장 기본적인 읽기 정도는 나와 있다. CircuitPython UART Serial https://learn.adafruit.com/circuitpython-essentials/circuitpython-uart-serial CircuitPython Essentials You've already gotten started with CircuitPython. What's next? CircuitPython Essentials! This guide provides examples of all the core modules and some of the common libraries found in CircuitPython and how they're used. You'll ..
IT/파이썬 2021. 8. 10.
vscode git bash terminal 에서 파이썬 버전 변경 실행
vscode git bash terminal 에서 파이썬 버전 변경 실행하는 방법은 기본적인 방법이지만, python.exe가 실행되는 위치의 경로를 기본 PATH 로 잡아 주는 방법이 가장 쉽다. 일단 PC에는 필요한 파이썬 버전을 각각 설치해 둔다. 내 컴퓨터의 경우 아래 처럼 설치가 되어 있다. C:\Users\User1\AppData\Local\Programs\Python\Python39 C:\Users\User1\AppData\Local\Programs\Python\Python38-32 C:\Users\User1\AppData\Local\Programs\Python\Python38 평소에 Python 3.8 버전의 Python을 사용하다가 필요에 따라 버전을 변경해야 하면 실행되는 python...
IT/파이썬 2021. 8. 6.
임베디드 보드 파이썬 - CircuitPython MicroPython
PC 환경이 아닌 임베디드 보드에서 동작하는 파이썬 환경이 있다. MicroPython 이 대표적이라고 볼 수 있다. RaspberryPi Pico 보드의 공식 포트는 이 마이크로파이썬으로 되어 있긴 하네. 그런데, 여러 라이브러리를 import 해서 쓰려고 하니 여기저기 찾아봐야 하는 것이 많다. CircuitPython ! 임베디드 보드 및 프로젝트에서 엄청 유명한 Adafruit 에서 공식적으로 배포하고 있는 MicroPython fork 버전이다. 여기에는 그냥 갖다 쓸 수 있는 라이브러리가 많다. 왠만한 모듈에 대한 드라이버의 기본 예제는 제공하는 듯 하다. 부품을 워낙 많이 팔고 있으니 계속 유지보수 될 것이라는 기대도 있다. Adafruit 홈페이지에서 내세우는 차이와 장점을 살펴보자. ht..