Python/FastAPI (6) 썸네일형 리스트형 [FastAPI] PassLib와 Bcrypt를 활용한 패스워드 해싱 How to Password Hashing in FastAPI?In FastAPI Official docs, it recommand "PassLib" Python package to handle password hashes. The recommended algorithm is "Bcrypt".if you use poetry, then follow this command.poetry add "passlib[bcrypt]"we can encrypt plaintext passwords to use PassLib, and create module that validate encrypt string is from the received plaintext.from passlib.context import Cryp.. [FastAPI] MS SQL Server 연결 중 _SQLAllocHandle 예외 ms-sqlserver db에 연결 중 위와 같은 ImportError를 만난다면 아직 mac 환경에 ODBC 드라이버 세팅이 되어 있지 않았기 때문이다.symbol not found in flat namespace '_SQLAllocHandle'Mac 환경에서 SQL Server 연결 시에는 DB 접속 정보뿐만 아니라 ODBC 드라이버 세팅이 되어야 접속 가능하다.1. Homebrew를 통해 UnixODBC 설치환경 세팅을 위해 Homebrew를 사용합니다.Homebrew는 macOS에서 패키지 관리를 쉽게 해주는 도구입니다.Homebrew 미설치 시/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/ins.. [FastAPI] AttributeError - 'ScalarResult' object has no attribute 'field' 문제상황Repository에서 session.scalar() 함수를 사용하여, 사용자가 입력한 'username'과 일치하는 유저 정보를 조회하려는 상황이다.request 요청 시, 500 서버 에러를 반환하며, 로그에 다음과 같은 문장이 출력된다.AttributeError: 'ScalarResult' object has no attribute 'password'ScalarResult 객체에서 password를 찾을 수 없다고 안내하며, 로그가 표시한 라인을 확인하니 아래와 같다.verified: bool = user_service.verify_password( plain_password=request.password, hashed_password=user.password # .. Mac 환경에서 mysqlclient 설치 시, pkg-config가 설치되어 있지 않다면 만날 수 있는 에러 - Can not find valid pkg-config name. Mac 환경에서 mysqlclient 설치 시, pkg-config가 설치되어 있지 않다면 만날 수 있는 에러 상황이다. FastAPI에서 SQLAlchemy를 사용하여 ORM 세팅 시, MySQL를 사용한다면 연결하기 위해서 mysqlclient 설치가 필요하다.poetry add mysqlclient poetry를 사용한다면 위 명령어 입력 시, 아래와 같이 pkg-config를 찾을 수 없다는 예외 메세지를 확인할 수 있는데Exception: Can not find valid pkg-config name. Specify MYSQLCLIENT_CFLAGS and MYSQLCLIENT_LDFLAGS env vars manually [end of output] brew 명령어로 .. [FastAPI] LifeSpan Events에 대해 알아보자 이 글은 FastAPI 프로세스가 시작 또는 종료 될 때, 특정 함수를 호출하는 생명주기 이벤트 핸들링에 대해 정리한다. 내용은 이전에 사용하던 on_event 방식을 먼저 설명하고, 현재 권장하는 lifespan 방식을 설명하는 순서로 진행한다.1. on_event 방식 (Deprecated)과거에 FastAPI에서 생명주기 이벤트 핸들링을 할 때는 on_event(with startup and shutdown )를 사용해서 이벤트를 관리했었다.startup 이벤트를 함수에 선언해서 어플리케이션이 시작하기 전에 실행하도록 한다.여러 개의 이벤트 함수를 생성할 수도 있으며, 어플리케이션은 모든 startup 이벤트 핸들러가 성공할 때까지 request 수신을 시작할 수 없다.from fastapi imp.. Sqlacodegen 사용하여 SqlAlchemy Model 자동생성하기 새로운 테이블을 구성하는 것이 아니라 이미 구축되어 있는 데이터베이스에 연결하여 이를 매핑해야하는 상황이다.ORM 모델을 만들어야하는데 181개의 컬럼인 테이블을 직접 만드는거 자체가 말이 안되서 역시나 파이썬 라이브러리가 있을 거라고 굳게 믿고 검색했더니 sqlacodegen라는 라이브러리가 존재한다.관심 있는 사람들은 깃허브 링크를 참고 -> https://github.com/agronholm/sqlacodegen빠르게 들어가보자pippip install sqlacodegen Command터미널에서 DB 접속 정보와 함께 생성할 모델을 정의하게 되면 해당 데이터베이스에 있는 테이블들이 모두 SqlAlchemy Class 파일로 생성이 된다.sqlacodegen postgresql://dongheonl.. 이전 1 다음