본문 바로가기

728x90
반응형

Language

(57)
[SQLAlchemy] dependency-injector로 SQLAlchemy Session 다루기 HTML 삽입 미리보기할 수 없는 소스 개요 FastAPI에서 SQLAlchemy Session을 사용하는 예제들을 살펴보면, 주로 contextmanager를 활용한 방법들이 계속해서 등장한다. 이러한 예제들은 주로 FastAPI에서 제공하는 Depands 함수를 이용하여 Dependency Injector를 구현한 형태이다. 그러나 "dependency-injector"라는 DI 라이브러리를 통해서도 DI를 사용할 수 있는데 이 글에서는 “dependency-injector”를 이용해 SQLAlchemy Session을 FastAPI에서 사용한 방법을 기술하려 한다. dependency-injector library 객체 지향 언어에서 뜻하는 의존성 주입은 꽤나 포괄적이고 그 내용도 심오하지만 기본적..
[GCP] Python으로 Youtube 데이터 다루기 2023.09.26 - [개발 노트/Python] - [Python] Google API 사용을 위한 GCP 설정 개요 이 글에서는 Python에서 Google API를 통해 Youtube 데이터를 조작할 수 있는 코드를 간략히 다룹니다. Google Youtube API Document Youtube API의 경우 Oauth로 인증만 된다면 비교적 쉽게 이용할 수 있습니다. 다음 링크는 Youtube API의 API 문서입니다. OAuth 2.0 승인 구현 | YouTube Data API | Google for Developers 이 페이지는 Cloud Translation API를 통해 번역되었습니다. Switch to English OAuth 2.0 승인 구현 컬렉션을 사용해 정리하기 내 환경설정..
[SQLAlchemy] Connection 설정에 관한 탐구 HTML 삽입 미리보기할 수 없는 소스 개요 SQLAlchemy를 사용하다 MySQL 쪽에서 자꾸 Aborted Connection이 발생하고 있는 걸 확인했다. 왜 이런 경고가 뜨는지 의문이 들었고 이왕 조사하는 김에 Connection 설정에 관련된 부분들을 더 살펴봤다. 관찰한 결과를 기록하기 위한 용도로 정리했기에 SQLAlchemy의 동작원리와 다소 상이할 수 있는 것에 유의하자. 또한, 사견도 기록하기에 SQLAlchemy을 미리 사용하시는 분이시라면 많이 혼란이 생길 수 있음을 미리 알려드린다. 1. Connection은 실제로 query를 날릴 때 생성된다. Aborted Connection이 일어난 상황은 SQLAlchemy에서 Connection Pool을 잡은 상태였기에 Connect..
[SQLAlchemy] Imperative Mapping HTML 삽입 미리보기할 수 없는 소스 개요 ORM이 제공하는 가장 중요한 기능은 영속성 무지(Persistence Ignorance)다. 도메인 모델이 데이터를 어떻게 적재하는지 또는 어떻게 영속화하는지에 대해 알 필요가 없다는 의미다. 영속성 무지가 성립하면 특정 데이터 베이스 기술에 도메인이 직접 의존하지 않도록 유지할 수 있다. - 파이썬으로 살펴보는 아키텍처 패턴 (64p) SQLAlchemy를 사용하는 Application에서 Entity를 사용한다면 이는 곧 Declarative Mapping Style로 작성된 ORM Model과 연관될 가능성이 높다. 그러나 Application에서 Entity가 "도메인 모델"로써 표현이 되어야 한다면 이는 다른 방법을 취해야 한다. 이러한 생각을 가지..
[SQLAlchemy] SQL Logging 가독성 향상시키기 HTML 삽입 미리보기할 수 없는 소스 개요 SQLAlchemy의 SQL log는 눈에 잘 들어오지 않는다. 어떤 설정 없이 이용할 경우 SQL에 대해 Formatting이 적용되지 않아 그런지 가로로 늘어져있는 SQL을 읽을 때마다 가독성이 떨어진다. 그러한 이유로 SQLAlchemy의 SQL Log도 Formatting을 적용할 수 있는 방법이 없을지 조사했다. 1. SQLAlchemy의 SQL Log SQLAlchemey의 기본 SQL Logging은 다음과 같은 형식이다. SQL Logging이 언뜻봐서는 어디가 SELECT인지 어디가 FROM인지 눈에 들어오지 않는다. 위의 예시에서는 SELECT ~ FROM이라는 간단한 SQL을 예시로 사용했기에 금방 찾을 수 있을지 모르나 table join..
Python을 이용해 Chrome Cookie 가져오기 HTML 삽입 미리보기할 수 없는 소스 개요 브라우저의 동작을 분석해야 될 때가 간혹 있다. 그중에서 cookie에 무슨 값이 들어있나를 보고 다시 코드 레벨에서 쿠키를 그대로 다뤄야 하는 경우가 종종 발생한다. 그런데 이런 상황을 마주할 때마다 어떤 cookie를 사용하는지 확인하고 이를 코드레벨에서 다시 작성하기 많이 번거롭다는 생각이 든다. 한 두 개라면 몰라도 쿠키에 들어있는 데이터가 너무 많다면 매번 복붙으로 해결하는 것도 한계가 있다. 그러한 이유로 Python을 이용해 Cookie 데이터를 얻어올 수 있는 방법은 무엇인지 조사했다. 1. 사용 중인 cookie를 확인하자. 사용 중인 cookie를 확인하려면 EditThisCookie라는 플러그인을 이용하던가 혹은 Javascript 콘솔에서..
[SQLAlchemy] Raw SQL HTML 삽입 미리보기할 수 없는 소스 개요 SQLALchemy는 ORM과 많이 밀접하다. 그러나 가끔씩 Raw SQL을 사용해야 될 때가 있다. 이 글은 SQLALchemy 2.0에서 Raw SQL 사용예제를 모아둔 글이다. 1. Setup Raw SQL을 작성하기에 앞서 간단한 테이블을 만들자. CREATE TABLE `member` ( `id` int(1) unsigned NOT NULL AUTO_INCREMENT, `random_id` char(36) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8 아래는 이 테이블에 매핑되는 class이다. 어떤 의미로써는 Entity이다. @dataclasses..
LangChain으로 크롤링을 해보자. HTML 삽입 미리보기할 수 없는 소스 개요 최근 사이드 프로젝트에서 크롤링을 맡아 작업하게 됐다. 크롤링에 관한 글을 읽던 중 AI를 이용해 크롤링을 할 수 있다는 정보들이 눈에 띄었다. 과거에 크롤링을 할 때는 HTML Tag를 하나하나 분석해서 데이터를 얻는 노가다성 작업이 이제는 AI를 통해 간편하게 이뤄지는 건가라는 생각과 함께 간단히 튜토리얼을 맛보기로 했다. 튜토리얼로써는 네이버의 뉴스 기사를 "제목", "서론", "본론", "결론"에 따라 요약해 주는 크롤러를 만들어보는 것을 목표로 했다. 1. LangChain 설치와 초기화 Python에서 AI를 이용해 크롤링을 하기 위해서 다운받은 라이브러리는 langchain이다. pip install langchain pip install tikt..

728x90
반응형