728x90
반응형

파이썬 16

[가계부 만들기] Category 생성/수정/삭제

이전 포스팅에서 카테고리에 관련된 기능을 구현하기 위해 설계한 구조와 리스트를 가져오는 내용을 정리하였다. 이번 포스팅에서는 생성/수정/삭제와 관련된 기능을 기록하려고 한다. 사실 생성/수정/삭제 기능은 이전에 회원 정보를 관리할 때 사용한 기능과 거의 동일하다. 테이블이 바뀌니 모델이 달라지고 패스워드가 없으니 암호화되는 과정이 생략되는 정도로 생각하면 된다. 카테고리 생성 먼저 생성하는 코드를 먼저 구현한다. 이전과 동일하게 로직은 services 아래 category_service.py에서 구현하고 라우팅만 연결하도록 할 것이다. 로직을 먼저 구현한다. 코드는 아래와 같다. # 카테고리 생성 async def create_category( db: AsyncSession, member_no: int,..

[가계부 만들기] 카테고리 설정 - 구조/리스트조회

가계부에서 수입/지출 항목을 입력하는 기능을 만들기 전에 먼저 카테고리 설정에 관련된 기능을 구현하고자 한다. 모든 수입/지출 내역은 카테고리로 정리할 수 있을 것이다. 물론 카테고리 항목이 비어있을 수도 있겠지만 카테고리를 정리해두면 추후에 통계 자료를 만들 때 활용할 수 있는 여지가 많다. 다년간 개발을 하다보니 원 데이터가 상세하면 이를 가공해서 만들 수 있는 통계도 훨씬 다양하게 만들 수 있다. 이전 내용에서 회원 가입시 기본 카테고리를 자동으로 생성해주는 코드를 붙여두었다. 기본적인 카테고리 정보가 있으니 먼저 카테고리 리스틑 가져오는 것부터 시작해서 카테고리를 새로 생성하고, 수정하고, 삭제하는 기능을 구현하도록 할 것이다. 카테고리는 하나의 카테고리 정보가 때어내어서 관리하는 일보다는 리스트..

Sqlalchemy를 통한 postgresql timezone 설정

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

Programming/Python 2023.05.08

[가계부 만들기] Category Table 구조 변경

카테고리 관련 기능을 구현하려고 보니 카테고리 관련 테이블 구조가 잘못된 것을 알게 되었다. 최초에는 시스템에서 정의한 카테고리만 보이도록 하고 시스템에서 정의한 카테고리는 변경을 할 수 없도록 하려고 했다. 그러나 출력되는 순서를 변경하고 싶거나 시스템 카테고리에 서브로 카테고리를 더 추가하고 싶을 수도 있을 것이라고 판단된다. 그럼 회원이 가입할 때 시스템 정의 카테고리를 회원별로 정의해 주고 회원별로 정의된 카테고리는 각 회원이 자신의 필요에 맞춰 수정할 수 있도록 해야 할 것이다. 그리고 최초 정의한 테이블에는 지출에 대한 카테고리만 생각하고 정의했는데 수입에 대해서도 카테고리를 정의하고 싶을 수 있으므로 카테고리 테이블에 수입/지출에 대한 구분 값을 넣을 것이다. 마지막으로 순서를 변경할 수 있..

[가계부 만들기] DB 비동기 처리

프로그램을 구현하다 보면 좀 더 효율적이고 빠르게 동작하는 프로그램으로 계속 수정해나가야 한다. 이렇게 프로그램의 퍼포먼스를 증가시켜서 더 사용자들에게 프로그램이 진화하고 있다는 것을 보여주는 것이 중요하다. 프로그램을 개발하다 보면 보편적으로 가장 많은 리소스를 차지하는 것이 결국에는 IO 처리이다. 파일을 읽고 쓰고, 네트워크로 데이터를 주고 받고 하는 일련의 과정들이 결국에는 IO인 셈이다. 그럼 이렇게 리소스를 많이 잡아먹고 대기시간을 길게하는 IO 작업을 한없이 기다리게 할 수 없을 것이다. 그래서 일반적으로는 이런 처리를 비동기로 처리하도록 개발한다. 동기와 비동기에 대한 차이를 여기서는 자세히 기술하지 않을 것이다. 간단하게 설명하면 동기 방식으로 프로그램을 구현하면 네트워크에 질의를 하였을..

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

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

Programming/Python 2023.04.17

[가계부 만들기] Backend - 회원 관리 기능 #5

회원 관리 기능에서 기초가 되는 기능에서 마지막은 refresh token을 통해서 access token과 refresh token을 갱신하는 기능일 것이다. 세션을 사용하지 않고 JWT만으로 사용자 정보를 검증하기 때문에 access token의 유효시간이 만료되었을 때 이를 새로 갱신해줄 필요가 있다. 해당 포스팅에서 해당 기능을 간단하게 구현하도록 한다. Schema 생성 refresh token을 갱신할 때 Response로 받을 schema를 추가적으로 생성할 것이다. 물론 그냥 str로 받아도 되지만 이렇게 받는 것보다 schema를 통해서 정의하는 것이 좀 더 좋아보인다. databases/schemas.py 파일에 아래 코드를 추가한다. # Refresh token을 위한 request ..

[가계부 만들기] Backend - 회원 관리 기능 #4

이제 사용자가 전달한 값을 통해서 실제로 Database에 연동하는 코드를 넣을 것이다. 서비스 디렉토리 생성 먼저 비즈니스 로직을 담당하는 파일들을 모아둘 디렉토리를 생성하고 __init.py__ 파일을 추가해둔다. 그리고 회원 관련 로직을 작성할 members_service.py 파일을 생성한다. 이제 구조를 만들었으니 이제 내용을 작성해보자. 외부 파일 참조 및 변수 선언 from sqlalchemy import select from sqlalchemy.orm import Session from sqlalchemy.sql import func from datetime import timedelta from ..database import models, schemas from ..libraries i..

[가계부 만들기] Backend - 회원 관리 기능 #3

기능 개발을 해가다보니 앞에 개발했던 부분에서 뭔가 부족한 부분을 발견하고 추가하게 된다. 앞선 회원 관리 기능 포스팅에서 schema에 대한 내용을 정리했었는데 회원 정보에 대한 관리 기능을 구현하다가 보니 처음에는 생각하지 못했던 부분을 추가하게 되었다. Schema 현재 버전의 schema.py 파일은 아래 내용과 같다. from pydantic import BaseModel, Field from typing import Optional # 회원 가입에 대한 Request Schema class MemberCreate(BaseModel): member_id: str = Field(title="사용자 아이디", max_length=30) member_pw: str = Field(title="사용자 패..

[python] Dictionary

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

Programming/Python 2023.03.29
728x90
반응형