전체 글 (367) 썸네일형 리스트형 [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을 이.. [24년 2월] 계속 자라나기 개요24년도 2월은 경험적으로 많은 일들이 겪었다. 주로 책이나 강의를 통해 새로운 지식을 알기도 했고 가족여행이라는 이벤트도 있었기에 재미있는 경험들을 많이 겪은 한 달이다. 그리고 한빛미디어에서 주관하는 서평단 활동인 "나는 리뷰어다 2024"를 처음 체험했다. 총체적으로 무직인 상태와 설날이 포함된 2월이었음을 감안하면 다양한 인사이트를 얻을 수 있었던 한 달이다. 한빛미디어 - 나는 리뷰어다 20242월엔 새로운 독서 활동을 시작했는데 한빛미디어에서 주관하는 도서 서평단 활동인 “나는 리뷰어다 2024” 이다. 10가지 정도로 리스트업 책 중 2 권을 선택하면 선택된 2권 중 1권을 랜덤 하게 받아서 서평을 작성하는 활동이다. 내가 서평을 작성한 책은 “개발자가아 알아야 할 최소한의 실무 지식”.. [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를 작성하는 게 어색하게.. [DDD] Entity란? HTML 삽입 미리보기할 수 없는 소스 개요 Domain Driven Design(이하 DDD)를 처음 접했을 때 참 매력적인 주제라 생각했다. 개발을 시작하고 2년 차에 접어든 무렵에 알게 된 주제였는데 "코드"를 어떤 관점에서 바라보고 작성해야 되는지의 시야를 넓혀주었기 때문이다. 이때 당시엔 DDD에서 말하는 개념들이 너무 생소한지라 그런가 보다라며 다른 주제에 관심을 돌렸었다. 어느 정도의 시간이 지나고 Sping의 MVC의 패턴을 접하게 되었는데 역할에 따라 구성된 코드 구조를 보면서 이를 Python으로 옮긴다면 단순히 MVC 패턴이 아닌 "무엇"을 더해 코드를 구성하면 좋을까로 고민이 이어졌다. 그러던 와중 예전에 펼쳐서 읽어봤던 "DDD"에 관련한 책을 다시 읽으면서 Python으로 DDD.. [FastAPI] Depands와 Dependency-injector DI 비교해보기 HTML 삽입 미리보기할 수 없는 소스 개요 최근에는 SQLAlchemy의 session을 이용해 프로젝트 구조를 잡는 편이다. FastAPI가 구동되는 단계에서 DI를 이용해 전역적으로 사용할 Session을 설정하는 방식으로 구성하는데 크게 3가지 정도의 방법을 이용해 Session DI를 구성할 수 있었다. SQLAlchemy의 Session으로 DI를 사용할 경우 어떤 식으로 DI를 시도했는지에 대한 내용 정리와 각 구성별 LoadTest 결과를 기록하려 한다. 테스트 셋업 FastAPI에서는 Too Many Open File 이슈가 발생할 수 있다. ulimit 설정은 soft 설정을 5012 정도로 잡았다. locust를 이용해 테스트를 진행했으며 RPS 가 어느 경우에 더 높은 지를 보는 게.. [Review] 개발자를 위한 최소한의 실무 지식 한빛미디어 활동을 위해서 책을 제공받아 작성된 서평입니다. 개요 서울에서 상경한 후 소규모 보안 업체에서 인턴을 거쳐 개발자로 전직하고 보니 어느새 4년 차 개발자가 되었다. 개발 공부를 체계적으로 하거나 취업을 위해 단계를 밞으며 하진 않았던 터라 개발자를 막 시작했을 때는 개발 업무의 어려움을 피에르 부르디유가 언급한 3가지 자본(인적, 사회적, 문화적)을 기반으로 문제에 부딪힐때마다 적절히 해결해왔다. 다양한 문제들에 부딪히며 어떤 상황은 책에서 얻은 지식만으로도 해결가능한 문제도 있었고, 구현의 복잡도나 머릿속에 들어있지 않은 개념들은 회사 사수님이나 주변 지인들의 도움을 받아 온 것이다. 그간 있었던 사례들을 돌아보니 내가 무엇을 알고 있는지, 무엇을 모르고 있는지, 그리고 모르는 부분을 어떻.. 이전 1 ··· 9 10 11 12 13 14 15 ··· 46 다음