728x90
반응형

Programming/Python 6

Sqlalchemy를 통한 postgresql timezone 설정

개발을 하다보면 날짜를 다루는 일을 꽤 많이 하게 된다. 그만큼 중요한 업무이기도 하다. 보통 테이블을 설계할 때 Row 단위로 해당 Row가 생성된 일시와 수정된 일시, 그리고 삭제된 일시를 자동으로 남기도록 한다. 이 때 각 데이터베이스마다 날짜를 다루는 컬럼 타입이 조금씩 상이하다. mysql에서는 timezone이라는 개념이 없이 timestamp, datetime, date 등의 형태로 지정한다. 이와 다르게 postgresql에서는 timestamp에 timezone을 같이 저장하는 형태와 저장하지 않고 timestamp만 저장하는 형태 두 가지로 구분하여서 생성한다. 국내용으로 개발할 때는 굳이 timezone을 저장할 필요없이 timestamp만 저장하면 될 것이고 해외도 같이 서비스를 할..

Programming/Python 2023.05.08

[python-pptx] 파이썬을 이용한 파워포인트 차트 수정

프로그램 코드를 통해서 파워포인트 파일을 수정해야할 일이 생겨서 자료를 찾아보니 python에서는 python-pptx라는 모듈을 활용하는 것을 찾았다. 늘 마찬가지로 내용을 잊어먹기 전에 포스팅으로 정리해두도록 한다. 이번에 할 일은 2장 짜리 pptx 파일에서 2번째 슬라이드에 막대 그래프의 값을 변경하는 것이다. 슬라이드는 다음과 같이 생겼다. 여기서에서 연도별 수익으로 표기된 부분의 y-axis 인덱스 이름과 각 표기된 값을 수정하는 코드를 작성할 것이다. 먼저 pptx라는 모듈을 설치하도록 한다. % pip install python-pptx 설치할 때 모듈의 이름은 python-pptx이다. 이제 코드를 작성하도록 한다. 파일 이름은 test.pptx로 하였다. 우선 파일을 읽어들이는 부분을 ..

Programming/Python 2023.04.17

[python] Dictionary

파이썬에서 Dictionary(딕셔너리)는 매우 중요한 자료형 중 하나이다. Dictionary는 key-value 쌍으로 이루어진 데이터를 다루기 위한 자료형이다. 이번에는 파이썬의 Dictionary 자료형의 특징, 제약 사항 및 사용 방법 등에 대해 자세히 알아보도록 하겠다. Dictionary의 특징 Dictionary는 key-value 쌍으로 이루어져 있습니다. 즉, 값을 저장할 때 key를 지정하여 저장하며, 이 key를 이용하여 값을 참조합니다. Dictionary는 리스트나 튜플과 달리 순서가 없습니다. 즉, 값을 저장한 순서대로 출력하지 않습니다. Dictionary의 key는 변경 불가능한 자료형을 사용해야 합니다. 즉, 문자열, 정수, 실수, 불리언 등을 사용할 수 있지만 리스트나 ..

Programming/Python 2023.03.29

[sqlalchemy] Postgresql Query ORM 변환

어제 회사에서 코드를 보다가 뭔가 개선점을 발견하고 한참을 작업해서 코드를 수정했는데 기록을 남겨두고자 포스팅한다. AS-IS 해당 코드는 이런 역할을 한다. 검색에서 광고로 사용할 키워드를 등록해두면 사용자가 검색 질의를 하면 해당 키워드가 현재 사용중인 광고에 포함되는 키워드인지 확인해보는 것이다. 각 광고는 여러개의 키워드를 가질 수 있으면 광고와 키워드 간의 관계는 m:n의 관계이며 각 광고는 서비스의 시작일과 종료일을 가진다. 이렇게 키워드를 추출하는 이유는 DB의 부하를 줄이기 위해서 키워드 리스트만 따로 추출해서 레디스에 들고 있다가 질의가 들어오면 해당 키워드로 등록된 광고가 있는지 확인하고 있으면 정보를 가져오고 없으면 빈 값을 보내기 위해서이다. 즉, 디비의 부하를 줄이기 위한 조치이다..

Programming/Python 2023.03.22

[Python] Mac에서 개발 환경 구축

이직을 하면서 회사에서 Backend 언어로 Python을 기반으로 fastapi를 사용하게 되었다. Python으로 Object detection을 위한 모델 학습하는 코드는 작성해보았지만 웹서비스를 만들어보기는 처음이다. 예전에는 anaconda를 설치해서 가상 환경에서 개발을 진행하였다. 각 환경별로 패키지를 다르게 설치하고 개발을 했다. 근데 이게 가상환경으로 구동되다보니 아무래도 불편했다. 가상환경을 만들어주는 것도 귀찮고 각 가상환경을 activate 했다가 deactivate 하는 명령어를 입력해야 했고 콘솔도 가상환경의 이름이 붙다보니 쓸데없이 길기만 했다. 이번에 이직해서 python개발 환경을 구축하다보니 pyenv라는 것을 사용하였다. anaconda 같이 각 버전별로 가상환경을 만들..

Programming/Python 2023.02.03

[fastapi] Pydantic Model을 Request Form 데이터로 받기

회사에서 Fastapi를 통해서 개발을 하고 있는데 Fastapi의 장점 중에 하나가 Swagger와 Redoc으로 자동으로 문서를 만들어준다는 것이다. Fastapi를 사용하면서 백엔드 개발자의 입장에서 이점이 가장 마음에 든다. 코드만 잘 작성해두면 자동으로 문서를 만들어준다니!! Request parameter와 Response Model을 잘 정리해두면 이쁜 문서가 짠 하고 만들어진다. 근데 개발을 하다가 Request parameter에 Schema로 이쁘게 만들 수 있는데 이게 json형태로 자동으로 지정된다. Schema를 잘 작성하면 Frontend에서 거기 맞게 데이터를 잘 가공해서 보내면 문제가 없는데 파일 업로드를 같이 하면서 데이터를 받으려니 Form으로 받아야 하는데 그럼 정성스럽..

Programming/Python 2023.01.31
728x90
반응형