분류 전체보기 (363) 썸네일형 리스트형 [Review] LEAN HR 한빛미디어 서평단 활동을 위해서 책을 제공받아 작성된 서평입니다. 읽게 된 배경 서울에 올라와서 4년이 흘렀다. 돌이켜보니, "직원"으로서 스타트업을 경험했지만, 실제로는 "스타트업"에 대해 진지하게 생각해 본 적이 없었다 핑계를 대자면, 당면한 업무에 집중해 직무 전문가로서의 역량을 갖추는 것이 중요하다 생각했기에 스타트업이라는 조직이 어떻게 운영되어야 하는지에 대해 생각해보지 않았던 것이다. 이 글을 읽는 분은 “4년 차가 스타트업 운영까지 신경 써야 하는 연차인가?”라 보실 수 있다. 그러나 내가 이런 고민을 하는 이유는 작년부터 진행 중이던 사이드 프로젝트가 “창업”을 목적으로 프로젝트 개발이 진행되고 있기 때문이다. 최근에 와서 조직이라는 기틀을 마련 중인 상황에 자연스레 “나는 스타트업에 대해.. [SQLAlchemy] Pessimistic/Optimistic Lock HTML 삽입 미리보기할 수 없는 소스 개요 웹 서버는 여러 Client의 요청을 동시에 수행할 수 있어야 한다. 한 자원을 놓고 동시에 요청이 실행한다면 어떤 문제가 발생할 수 있을까? 위와 같은 주제는 동시성(Concurrency)이라는 개념에 대해 생각하게 만드는 주제이다. 비관적(Pessimistic)/낙관적(Optimistic) 잠금에 대한 이해를 필요로 한다. 그러한 맥락에서 이 포스팅은 SQLAlChemy의 Session ORM을 통해 각각을 어떻게 구현할 수 있을지에 대해 정리한 내용이다. 1. Concurrency 문제 한 자원을 놓고 동시에 요청을 실행하는 문제는 익히 알려져 있다. 이는 다음과 같은 도식화로 설명이 가능하다. 위와 같은 시나리오에서는 사용자 A, B가 Resouce를 .. [SQLAlchemy] Imperative Mapping, One to Many Mapping HTML 삽입 미리보기할 수 없는 소스 관련글 2024.02.25 - [Language/Python] - [SQLALchemy] Imperative Mapping, Eager/Lazy Loading [SQLALchemy] Imperative Mapping, Eager/Lazy Loading HTML 삽입 미리보기할 수 없는 소스 개요 SQLAlchemy의 imperative mapping 방식을 계속 다루다 보니 Repository라고 정의한 계층에서 Session Query를 많이 작성하게 된다. 예를 들어 다음과 같은 형식이다. sessio jakpentest.tistory.com 개요 이 글은 SQLAlchemy의 Imperative Mapping 방식을 이용해 1:N의 관계를 다루는 방법에 관해 .. [FastAPI] Pydantic BaseModel로 Form 데이터 처리하기 HTML 삽입 미리보기할 수 없는 소스 개요 어째선지 FastAPI의 문서에는 Pydantic의 BaseModel을 이용해서 Form 데이터를 처리하는 경우의 코드 예제는 보이지 않는다. 다양한 시도 끝에 BaseModel을 이용해 Form 데이터를 처리할 수 있는 방법을 찾았지만 꼼수를 부린 방법이라 그런지 FastAPI Log에서 다음과 같은 Warning 이 나고 있음을 발견했다. 해당 Warning을 인지하고 Pydantic의 BaseModel에서 Form 데이터를 처리할 수 있는 다른 방법을 조사한 뒤 해결했고 이 포스팅은 그 과정에 대한 것이다. 1. PydanticJsonSchemaWarning 먼저 "개요"에서도 언급했듯 PydanticJsonSchemaWarning을 발견하게 된 경위이다.. [SQLAlchemy] Imperative Mapping, exclude properties HTML 삽입 미리보기할 수 없는 소스 개요 imperative mapping을 사용하다 SELECT 쿼리로부터 특정 Column들을 제외하고 싶은 상황들이 있다. 이때 주요한 점은 SELECT로 얻은 Class의 attribute를 제외하는 방법이 아닌 SELECT 단계부터 특정 열을 제외하는 방식을 적용해 보고자 함이다. 즉, instance의 namespace 자체에서 임의로 정의한 Column들이 제외되어있어야 함을 의미한다. 1. Idea "특정 Column을 제외시키고 싶다"라는 생각에서 출발했지만 SQLAlchemy가 그러한 기능을 제공하지 않는다면 코드를 따로 작성해야 했다. 다행히 https://docs.sqlalchemy.org/en/14/orm/mapping_api.html에서 ex.. [SQLAlchemy] Imperative Mapping, Column 합성 HTML 삽입 미리보기할 수 없는 소스 개요 SQLAlchemy의 Imperative Mapping을 이용하다보니 “테이블의 열(column)을 모아서 Object로 표현할 수 있는 방법이 있지 않을까”를 고민하게되었다. 예를 들어 다음과 같은 코드가 있다고 가정해보자. class Member: address1:str address2:str 위의 코드를 ORM 관점에서 보자면 DB 테이블에 address1과 address2라는 열(column)이 존재한다고 생각해볼 수 있는 코드이다. 그러나 위와 같은 코드를 다음과 같이도 표현할 수도 있다. @dataclass class Address: address1:str address2:Str class Member: address:Address 위 코드를 통해 .. [Oauth] Python으로 KaKao Oauth Login Test하기 HTML 삽입 미리보기할 수 없는 소스 개요 과거 Google Oauth 로그인을 Python으로 테스트하기에 앞서 다음과 같은 라이브러리가 필요했었다. google-api-core==2.14.0 google-api-python-client==2.108.0 google-auth==2.23.4 google-auth-httplib2==0.1.1 google-auth-oauthlib==1.1.0 이번엔 KaKao Oauth Login(이하 KaKao Login)을 Python으로 테스트해 봤는데. 테스트하는 과정에서 KaKao Login을 위한 Python 라이브러리를 따로 찾을 수 없었다. 머리를 굴려보다 Python에서 KaKao Login을 테스트해보기 위한 방법으로 requests_oauthlib을 이.. [SQLALchemy] Imperative Mapping, Eager/Lazy Loading HTML 삽입 미리보기할 수 없는 소스 개요 SQLAlchemy의 imperative mapping 방식을 계속 다루다 보니 Repository라고 정의한 계층에서 Session Query를 많이 작성하게 된다. 예를 들어 다음과 같은 형식이다. session.query(MemberEntity).filter(MemberEntiy.id == member_id) 만약 join을 사용한다면 Session Query를 아래와 같이 작성한다. session.query(MemberEntity) .filter(MemberEntity.id == member_id) .outerjoin(MemberProfileEntity.member_id == member_id) 위와 같이 Session Query를 작성하는 게 어색하게.. 이전 1 ··· 7 8 9 10 11 12 13 ··· 46 다음