728x90
반응형

python 18

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

이제 여기서는 회원 정보를 처리하는 방법에 대해서 정리할 것이다. 암호화 또는 인증에 관련된 내용은 두 가지 정도로 정리할 수 있을 것이다. 첫 번째로 회원의 암호를 저장할 때 일반 텍스트로 저장하는 것이 아니고 hash로 처리한 후에 저장하고 로그인할 때 이렇게 hash 처리된 값과 입력한 암호가 일치하는지 확인하는 기능이 필요하다. 두 번째, 인증이 성공한 이후에 해당 사용자는 인증된 사용자임을 파악하기 위해서 토큰을 발생하고 이 토큰이 있는 요청에 대해서만 처리해줄 것이다. 이를 위해서 별도의 파일로 분리하여서 관련 코드를 정의하도록 하겠다. 인증 인증 관련 내용에 대한 파일은 app 디렉토리 밑에 libraries 디렉토리를 생성하고 auth.py 파일을 생성하여 해당 파일에서 정리하도록 할 것이..

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

Concept 프로그램을 만들면서 가장 기본이 되는 기능이 바로 회원 정보를 관리하는 것이다. 생성되는 모든 정보는 회원 정보에 종속되게 되므로 회원의 정보를 잘 관리하는 것이 매우 중요하다. 이 프로젝트에서는 회원의 많은 정보를 사용하지 않는다. 이전에 공유했던 회원 정보 테이블을 다시 보자. CREATE TABLE `tb_members` ( `member_no` smallint unsigned NOT NULL AUTO_INCREMENT COMMENT '멤버번호', `member_id` varchar(30) COLLATE utf8mb4_general_ci NOT NULL COMMENT '사용자 아이디', `member_pw` varchar(128) COLLATE utf8mb4_general_ci NOT..

[sqlalchemy] Postgresql Query ORM 변환

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

Programming/Python 2023.03.22

[가계부 만들기] Backend - Database #2

이전 포스팅에서 connection.py 파일을 통해서 mysql 서버에 접근하는 코드를 추가하였다. 이제 ORM을 사용하기 위해서 models.py 파일을 작성할 것이다. ORM에 대한 내용은 아래 링크에서 확인할 수 있다. ORM(Object Relational Mapping)이 뭘까? 🤔 ORM이란? ORM은 Object Relational Mapping 즉, 객체-관계 매핑의 줄임말이다. 객체-관계 매핑을 풀어서 설명하자면 우리가 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스와 RDB(Relatio geonlee.tistory.com Fastapi에서는 sqlalchemy 라이브러리를 사용하고 있고 여기서 지원해주는 ORM 기능을 통해서 데이터..

[가계부 만들기] Backend - Database #1

이제 본격적인 개발을 진행해볼 것이다. 본격적인 개발을 시작하면서 데이터를 실제로 저장할 데이터베이스를 연결해두어야 한다. 여기서는 app/databases 디렉토리를 생성하고 거기서 관련 코드를 넣을 계획이다. 개발은 vscode IDE를 사용하여서 진행할 것이다. uvicorn으로 프로그램을 실행하면 app 디렉토리 하단에 __pycache__라는 디렉토리가 생성된다. 이 디렉토리가 계속 생성되고 갱신되는데 개발에서 사용하는 디렉토리가 아니다보니 제법 신경이 쓰인다. 그리서 여기서는 해당 디렉토리를 보이지 않도록 처리한다. backend 디렉토리에서 .vscode 라는 디렉토리는 생성하고 settings.json 파일을 생성한다. 이렇게 하고 나면 디렉토리 구조가 다음과 같아 진다. settings...

[가계부 만들기] Backend - Initialize

Backend 프로그램을 만들기 위해서 우선 프로그램을 초기화해야 한다. 여기서는 Python 기반의 fastapi를 웹 프레임워크로 사용할 것이며 ORM을 사용하기 위해서 sqlalchemy 라이브러리를 사용할 것이다. 프로젝트는 Backend와 Frontend로 분리해서 개발할 것이지만 어쨌든 같은 디렉토리 안에서 작업하는 것이 개발이 용이할 것이라고 판단하여 account-book 디렉토리를 생성하고 그 하단에 Backend와 Frontend 디렉토리를 생성할 것이다. 다음과 명령어를 통해서 프로젝트 디렉토리를 생성한다.% mkdir account-book % cd account-book % poetry new backend여기서는 프로젝트 의존성 관리를 위해서 poetry를 사용하였으며 이에 대한..

[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
반응형