Loading...
2021. 1. 16. 13:55

[FastAPI] 4. SQLAlchemy + Alembic 조합을 이용한 Database Migration 가이드

웹 서비스를 개발하고 배포한 뒤에 반드시 한 번 쯤 따르는 업데이트 사항이 바로 데이터베이스 마이그레이션입니다. 데이터베이스를 마이그레이션하는 경우는 보통 아래의 3가지가 대표적입니다. 인스턴스의 이전 클라우드를 사용한다면 다른 인스턴스, 혹은 다른 리전으로의 이전 특정 Entity에 대한 변경 요청 우리 부서 혹은 우리 서비스에는 이 기능을 넣기 위해 이 칼럼이 더 추가로 필요할 것 같아요. 일부 영속된 데이터를 특정 데이터로 변경 이제는 이 명칭을 이 명칭으로 바꿀거에요. 모든 사항에 적용되었으면 좋겠어요. 간단하게 생각한다면 이러한 작업을 수동으로 처리할 수도 있습니다. 다른 데이터베이스 인스턴스를 하나 테스트용으로 만들고, SQL 쿼리를 짜본 다음 쿼리 테스트하고, 확실한 쿼리가 작성되었다면 이를..

2020. 12. 31. 15:41

[FastAPI] 3. SQLAlchemy + Graphene 조합으로 GraphQL 서버 만들기

이번 포스트에서는 GraphQL에 대한 이야기를 해보도록 하겠습니다. What is GraphQL ? GraphQL에 대한 이야기는 그리 길지 않기 때문에 여기서 간단하게 다뤄보도록 하겠습니다. GraphQL은 Facebook에서 개발한 데이터 표현 언어로 여기서 QL이 Query Language에 해당합니다. 우리는 서버에서 데이터를 가져오기 위해 REST API를 사용하였고, REST API는 메소드와 요청 데이터 혹은 응답 데이터로 구분하여 원하는 데이터를 가져오거나 데이터를 적재하는 등을 수행하였습니다. 그러나 GraphQL은 메소드 없이 오직 Query Language만을 이용하여 원하는 모델을 적재하고, 가져올 수 있습니다. 또한 원하는 항목을 클라이언트가 직접 명시함으로써 서버에서 제공해주는..

2020. 12. 27. 12:14

[FastAPI] 2. SQLAlchemy를 이용한 간단한 CRUD API 만들기

이번 글에서는 ORM에 대한 사용 방법에 대해 알아보도록 하겠습니다. ORM은 Object Relation Mapping의 약자로 객체를 이용해서 데이터베이스 Entity에 접근하는 방법입니다. 보통 애플리케이션 레벨에서 DB에 접근할 때는 데이터베이스 드라이버를 이용하여 SQL Query를 던져 실행하는 방법을 사용하지만 SQL Query는 소프트웨어 엔지니어에게 있어 러닝 커브를 증가 시키고, 소프트웨어 코드 가독성을 저하시키는 원인이 되었습니다. 하지만 ORM을 이용하면 기본적인 CRUD를 포함한 간단한 쿼리에 대해 SQL Query를 프로그래밍 코드에 질의하지 않아도 프로그래밍 코드 안에서 처리할 수 있는 이점을 얻을 수 있습니다. Python 언어에서의 대표적인 ORM 라이브러리로 SQLAlch..

2020. 12. 25. 16:42

[FastAPI] 1. GET, POST, PUT, DELETE 등 기본 API 만들고 문서 자동화 해보기

지난 글에 이어서 FastAPI를 이용해서 기본적인 REST API 개발 이야기 두 번째를 이어가보도록 하겠습니다. 우리가 REST API를 개발하면 주요 메소드 종류 5가지가 있는데요. 바로 GET, POST, PUT, DELETE, PATCH 이렇게 5가지 입니다. 물론 이 외에도 OPTIONS가 있지만 이 글에서는 다루지 않겠습니다. 기본 API 만들기 (GET) REST API의 기본 API는 먼저 GET 메소드부터 시작됩니다. GET 메소드는 서버로부터 리소스를 가져올 때 쓰는 READ API 입니다. FastAPI에서는 아래의 두 가지 방법으로 작성할 수 있습니다. from fastapi import FastAPI app = FastAPI() @app.route('/health') async ..

2020. 12. 25. 15:16

[Python] FastAPI 프레임워크를 이용한 비동기 REST API 개발

Python 언어를 이용하여 REST API 서버를 만들 수 있는 방법은 여러 방법이 있습니다. 국내 혹은 많은 개발자들의 사랑을 받고 있는 Django, 그리고 가벼운 프레임워크로써 많이 사용하고 있는 Flask 등 여러가지가 있는데요. 이번 글에서는 Jetbrains의 IDE 도구인 PyCharm과 FastAPI 프레임워크를 이용해서 REST API 서버를 개발하는 시간을 가져보도록 하겠습니다. What is FastAPI? Python에서는 웹 서버와 연동하기 위해 WSGI라는 인터페이스를 사용합니다. 그러나 WSGI는 동기 방식으로 프로그램을 처리하기 때문에 미리 들어온 요청을 처리할 때까지 다음 사람이 계속 기다려야 하는 단점을 감수해야 합니다. FastAPI는 Starlette이라는 비동기 프..

2020. 12. 20. 11:14

[Python] PyCharm에서 Poetry를 이용한 디펜던시 관리

소프트웨어 개발시 디펜던시의 관리는 이제 선택이 아닌 필수가 되었습니다. 여태까지 Python 언어를 이용해 소프트웨어 개발을 하였을 때는 requirement를 이용하여 환경별로 디펜던시 관리를 했었습니다. 그러나 requirements는 하나의 디펜던시를 설치할 때 하위 요소까지 설치해주지 않아 종속되는 디펜던시를 수동으로 설치해야 하는 불편함이 있습니다. Poetry Poetry - Python dependency management and packaging made easy. Intuitive CLI Poetry's commands are intuitive and easy to use, with sensible defaults while still being configurable. Soon ex..

2020. 12. 6. 18:42

[Python] REST API 개발로 알아보는 WSGI, ASGI

REST API 서버를 개발하기 위해서는 이제 특정 언어를 배워야 할 필요 없이 원하는 언어로 자유롭게 개발할 수 있는 세상이 오게 되었습니다. Python 언어 또한 다양한 프레임워크를 제공함으로써 REST API 서버를 쉽게 개발할 수 있는데요. 이를 제공하는 다양한 프레임워크가 많이 존재하지만 그 중 가장 보편화 되어 알려진 프레임워크는 아래의 두 가지 일 것입니다. Django Flask Django는 MTV 패턴을 제공하여 API 뿐만 아니라 템플릿을 이용하여 정적 HTML 파일을 생성해 뷰를 만들 수 있도록 제공하여 빠른 개발을 통해 높은 생산성을 자랑하는 프레임워크입니다. 반면 Flask는 오직 API만을 쉽게 제공하여 빠른 API 서버만을 만들 수 있도록 제공하는 것이 특징이죠. Sprin..

2016. 10. 23. 18:18

가상 환경을 사용한 Python 설치 - Virtualenv, autoenv

이번엔 Python을 가상 환경에서 설치하는 방법을 알아봅시다. 왜 Python을 가상 환경에서 설치해야 할까요? Python의 버전은 현재 2.7 버전과 3.x 버전이 존재합니다. 아마 프로그래밍을 조금 해보신 분들 중에 Java 라는 언어로 프로그래밍을 많이 해보신 분들이라면, 이런 버전의 차이에 굉장히 반감을 하거나 민감하게 반응하실 수 있습니다. 그렇습니다. 그 이유 중에 하나는 바로 여러분들이 프로그램을 개발하다 반드시 사용하게 되는 바로 "라이브러리"라는 녀석 때문이죠. 물론 공개된 라이브러리들은 대부분 최신 버전에 맞춰 수정이 되긴 하지만, 자신이 개발하는 프로젝트 내지 프로그램이 한 라이브러리만 쓰는 것은 아니기 때문에 모든 라이브러리에 버전을 맞추려면 여러 가지 고려해야될 사항이 많아집니..

2016. 10. 15. 15:22

Python 개발 환경, 프로그램 설치와 비교(3) - PyCharm

이번 포스트는 PyCharm 설치 포스트입니다. 아직 Python을 설치하지 못하셨다구요? 아래의 버튼을 클릭하여 설치 방법을 확인하시기 바랍니다. Python 설치 방법 보기 JetBrains PyCharmJetBrains 개발 도구를 많이 사용해보신 분들이라면, 유료 소프트웨어임에도 불구하고, 그 매력에 아마 많이 매료되실 것입니다. PyCharm은 JetBrains에서 개발한 Python 개발 IDE 도구입니다. 위에서 말했다시피 유료 소프트웨어지만, 무료로 일부 기능을 사용할 수 있고, 대학생의 경우, 1년에 한 번 씩 라이센스 갱신을 통해 전 기능을 무료로 사용하실 수도 있습니다. PyCharm은 매우 깔끔한 UI와 여러 개발 환경을 설정하도록 지원함과 동시에 django 등 웹 개발에도 유용하..

2016. 9. 24. 14:54

Python 개발 환경, 프로그램 설치와 비교(2) - Sublime Text 3

포스팅을 한지가 참 오래되었습니다. 학교 생활을 다시 시작하고 나서 여러 프로젝트 준비와 과제들이 이것저것 쌓이다보니, 블로그 활동을 소홀히 하게 되네요 ^^; 오늘은 지난 포스팅에 이어서 Python 개발 환경 설치를 계속 진행하도록 하겠습니다. 아직 Python을 설치하지 못하셨다구요? 아래의 버튼을 클릭하여 설치 방법을 확인하시기 바랍니다. Python 설치 방법 보기 Sublime Text 서브라임 텍스트 에디터는 Jupyter와 달리 유료 소프트웨어이지만, 무료 소프트웨어로도 사용할 수 있습니다. 이 개발 도구가 정말 좋은 것은 유료 소프트웨어와 무료 소프트웨어의 기능 차별이 전혀 없으며 단지 다른 점이 있다면, 구매해달라는 메시지를 가끔 뿌려주는 것 뿐입니다. Sublime Text는 UI가 ..

2016. 9. 6. 14:10

Python 개발 환경, 프로그램 설치와 비교(1) - Jupyter

13년도에 제가 학부 수업에서 Python을 원어 수업으로 들었습니다. 그 때만해도 교재가 거의 네트워크 교재 수준으로 두꺼웠었는데 수학적인 내용도 많았고, 이미지 처리 하는 등의 내용도 많이 있었지만 크게 관심을 갖지 않았습니다. 그러다가 최근에 Machine Learning을 공부하기 시작하면서 다시 Python을 접학게 되었는데요. 예전에도 그렇지만 지금은 더 뜨거운 언어가 Python인 것 같습니다.. 어느 컨퍼런스나 발표를 가도 Tensorflow 내지 Django에 대한 이야기가 굉장히 많더군요. 그래서 이번 포스트에서는 Python 카테고리를 추가하여 포스팅을 해보고자 합니다. Python 설치와 실행 Python은 Linux, Mac OS X, Windows 어디서든지 이용이 가능한 자유로..