Python (16) 썸네일형 리스트형 [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.. [Clean Python] Docsting 사용하기 1. Python에서의 Docstring파이썬에서 코드를 문서화하는 강력한 방법이 바로 Docstring이다. docstring은 해당 객체의 __doc__ 특수 속성이 된다.공식 언어에서는 docstring을 작성하기 위해 """삼중 큰따옴표(Quotes Marks)"""를 사용하는 것을 권장한다.이와 관련된 모범 사례를 살펴보자.독스트링을 작성하는 방법은 여러가지가 있지만 파이씬의 정의한 몇 가지의 공통 규칙은 다음과 같다.- 문자열이 한 라인에 있어도 triple quotes(삼중 큰따옴표)가 사용된다.- triple quotes의 문자열 전후에 빈 라인이 없어야한다.- period(.)를 사용해 docstring에서 구문을 종료한다.마찬가지로 파이썬 multiline docstring 규칙을 적용.. [Clean Python] 코드 작성을 위한 파이써닉 방법의 수용 PEP8에서 권고하는 파이선 코드 작성법에 대해 살펴보자.1. In-place 문자열 결합 대신 Join()을 사용한다.a +=b 또는 a = a+b와 같은 인플레이스 문자열 결합 대신 join() 메소드로 결합하는 것이 다양한 파이썬 구현에서 더 적은 시간 연계를 보장한다.문자열을 연결하면 파이썬 문자열은 불변이기 때문에 각 연결에 대해서 새로운 메모리를 할당해야하지만,join을 사용하면 파이썬이 결합된 문자열에 메모리를 한 번만 할당하기 때문에 Join()을 사용하는 것이 적합하다.first_name = "Json"last_name = "smart"# Not a recommended way to concatenate stringfull_name = first_name + " " + last_nam.. [Clean Python] Python 코드 표현과 구문 영리한 코드를 작성하는 것은 가독성과 단순성에서 또 다른 문제를 야기할 수 있다.users = [ {"first_name": "Helen", "age": 39}, {"first_name": "Buck", "age": 10}, {"name": "anni", "age": 9} ]users= sorted(user, key=lamda user: user["first_name"].lower()) 위 코드는 한 라인에서 람다를 이용해 중첩 딕셔너리를 first_name으로 정렬하고 있으므로 루프를 사용하는 대신 딕셔너리를 정렬하는 영리한 방법으로 보이지만, 이 코드는 문제점이 있다. 물론 람다로 딕셔너리를 정렬할 수 있으므로 라인 수를 줄일 수 있었지만, 람다는 애시당초 쉬운 개념이 아니기에 .. [Clean Python] 파이썬에서의 underscore(_, __)에 대해 파이썬 프로그래밍에서 Zen of Python이라는 철학은 복잡성보다 단순함을 강조한다.이번 포스팅에서는 파이썬 코드를 작성하는 동안 따라야하는 명명 규칙들에 대해 알아보면서, 조금 디테일한 부분들도 작성하려고 한다. 1.1 변수와 함수name = "James"my_job = "Software Programmer"populated_member_list = []소문자로 함수와 변수의 이름을 밑줄(_)로 구분된 안어로 지정하면 가독성을 향상시킬 수 있다.여기서 사용되는 Under Score는 Snake case로 네이밍을 할 때 외에도 다른 사용처가 있는데, 클래스 내부에서만 사용되는 Private 멤버를 정의할 때 사용된다. Non-Mangling 메소드 이름을 사용하는 것과 한 개의 밑줄과 2개의 밑줄.. [Python] Mac에서 default Python 버젼 변경하기 특정 라이브러리가 3.12를 지원안해서 python 버젼을 다운그레이드해야하는 상황이다. Check your python versionpython3 -VPython 3.12.3Search python paththen you can check where is the python file installed.which python3/opt/homebrew/bin/python3Change default python pathalias python3=/opt/homebrew/bin/python3.9recheck changed python versionpython3 -VPython 3.9.19 [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 # .. 이전 1 2 다음