본문 바로가기
반응형

PYTHON72

Python - FastAPI with CRUD application by pydantic FastAPI는 파이썬에서 사용할 수 있는 현재 가장 좋은 백엔드 프레임워크라고 할 수 있다. FastAPI는 다음과 같은 장점을 가지고 있다. 1. 각 함수는 비동기로 동작한다. 2. 백엔드를 작업하면 데이터 처리에 골치를 아픈 경우가 많다. FastAPI는 데이터 오류를 쉽게 처리할 수 있는 좋은 프레임워크 이다. Pydantic을 이용한 Json 값 오류를 쉽게 조치 할 수 있다. 세부적인 내용은 https://pydantic-docs.helpmanual.io/ 를 확인하기 바란다. 3. Swagger, Redoc를 기본적으로 제공한다 4. 파이썬에서 빠른 프레임 워크에 속한다. 아래 벤치마크 결과를 확인해보면, 다른 파이썬 웹 프레임워크 보다 휼륭한 속도를 가지고 있다. Round 19 resul.. 2024. 3. 25.
Python - FastAPI Relationship SQL data 처리 FastAPI를 이용해서 Relationship 데이터를 처리하면서 해당 부분만 요약해서 정리해 본다. 본 예시에서는 Post라는 본문에 관련있는 Account들을 나열하는 구조를 예시로 잡았다. 그리고 기본 프로그램의 구조는 아래와 같다. . └── crud.py ├── database.py ├── main.py ├── api.py └── schemas.py 이를 위해 Account와 Post에 대한 관계 테이블에 대한 Model을 정의 해야 한다. Post와 관련있는 Account를 참조하기 위해서 Account에 post_id라는 외례키 컬럼을 추가하였다. models.py from sqlalchemy import Boolean, Column, Integer, String, DateTime, Big.. 2024. 3. 25.
Python - Microsoft 365 Defender Advanced hunting Query Microsoft 365 Defender Advanced hunting Query 에서 사용할 수 있는 Python 코드이다. mde_search 함수를 재활용해서, 입력한 값이 어떤 타입인지에 따라 검색하는 조건을 바꾸도록 설계되어 있다. import json import time import argparse import pandas as pd import logging import sys import os import re import validators import datetime import random import zipfile import urllib.parse from collections import OrderedDict from urllib3.util.retry import Retry i.. 2024. 3. 18.
Python - 문자열을 Datetime변환시 TimeZone(strptime unconverted data remains) 해결하기 문자열로 되어 있는 값을 Datetime으로 변환하고자 한다면, 정확하게 각 문자열이 시간데이터 셋과 동일하게 맞추어야 하는데, Timezone을 인식 시키는 방법에 대해서 간단히 알아보고자 한다. 만약 아래와 같이 한국 타임존값이 들어 있는 것의 경우를 가정해 보겠다. '2023-12-18T15:47:56.599821424+09:00' >>> import datetime >>> str_date_time = '2023-12-18T15:47:56.599821424+09:00' >>> convert_datetime = datetime.datetime.strptime(str_date_time, '%Y-%m-%dT%H:%M:%S.%f') Traceback (most recent call last): File ".. 2024. 3. 14.
Python - Microsecond(마이크로초) 단위 문자열 변환하기 가장 기본적으로 많이 사용되는 시간 값은 소수점 6자리로 표현되는 Microsecond(마이크로초) 단위의 시간 값이라고 할 수 있다. from datetime import datetime str_datetime = '2023-12-18T15:47:56.599821' convert_datetime = datetime.strptime(str_datetime, '%Y-%m-%dT%H:%M:%S.%f') datetime.datetime(2023, 12, 18, 15, 47, 56, 599821) 2024. 3. 14.
Python - 타입 비교 type, isinstance 자주 사용하는 건데 자꾸 까먹어서 여기에 기록해 둔다. 현재 type이 리스트인지 확인하는 구분으로 리스트인 경우를 구분해 다른 처리를 진행할 때 사용할 수 있다. type 활용 직관적으로 type 구분을 활용하는 방법이다. >>> a_data = ['a','b'] >>> b_data = 'a,b' >>> if type(a_data) is list: ... print('yes, it is list') ... yes, it is list isinstance 활용 데이터간 비교시 사용하는 내장함수로 타입에도 사용이 가능하다. >>> a_data = ['a','b'] >>> b_data = 'a,b' >>> if isinstance(a_data, list): ... print('yes, it is list').. 2024. 3. 14.
Python - Linting, 소스 분석, 코드 최적화 flake8 최선의 성능과 안정성이 있는 코드는 모든 경고를 제거한 코드라 할 수 있다. 여기에서는 flake8를 통해서 간편하게 코드에서 필요한 수정사항등이 무엇이 있는지 알아보도록 하겠다. VSCode에서 많은 오류와 경고로 코드를 잡아주지만, VScode를 사용할 수 없거나, CI/CD 상황에서 사용할 만한 방법으로 flake8를 사용하면 어떨까 한다. 아래는 간단하게 VSCode 기본 상태에서 flake8를 이용해서 테스트를 한 결과이다. VScode와 다르게 현재 3가지 수정 사항이 있는 것으로 확인된다. flake8 이후 특정 파일이나 디렉토리를 통해서 코드를 분석할 수 있다. PS C:\Users\Han\python\flake8> python3 -m flake8 . .\test.py:4:1: F401 '.. 2024. 3. 14.
Python - HTTPConnectionPool 문제 해결, Max retries Python을 하다보면 가장 많은 오류를 볼 수 있는 부분이 Max retries 오류이다. HTTPConnectionPool(host='localhost', port=8080): Max retries exceeded with url: /xxx (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 61] Connection refused')) 이는 2가지 경우인데 자신의 Connection Pool이 꽉 차서 나타나거나, 반대로 상대방이 요청을 거부하는 경우이다. 보통 HTTPAdapter의 Retry 옵션을 구성해서 사용하는데 세밀하게 설정할 수 있다. Retry 설정 def requests_retry_session(.. 2024. 3. 14.
Python - 동적 리스트(dynamic list) 해결 ValueError: too many values to unpack 아래와 같이 들어오는 값보다 적은 변수를 선언한 경우 ValueError: too many values to unpack (expected 3) 가 발생하는데, 문제는 동적으로 변화하는 리스트인 경우 미리 변수를 선언하기가 어려울 수 있다. 동적 변수 *(아스키 기호) 이경우 쉽게 사용할 수 있는 매직 메소드가 바로 *(아스키 기호)이다. 파이썬은 * 를 통해서 동적으로 변수를 사용할 수 있는데, 선언 시점에 *를 입력하게 되면, 동적으로 동작하여, 부족한 변수만큼 리스트로 값을 받아들이게 된다. 아래와 같이 마지막 변수에, 아스키 기호를 넣어주면 부족한 값을 리스트로 마지막 변수에 넣게 된다. 2024. 3. 14.
반응형