파이썬 9

SQL(Structured Query Language)

SQL : MySQL 같은 관계형 데이터베이스에서 데이터를 읽거나 생성 및 수정하기 위해 사용되는 언어 기본적으로 CRUD라고 하며 데이터를 Create, Read, Updata, Delete하는 기능을 제공하는 관계형 데이터베이스 시스템 전용 언어이다. 즉, 관계형 데이터베이스 시스템에서 데이터를 읽거나 새로운 데이터를 생성하거나 할 때 SQL을 사용하여 처리하게 됨 SELECT, INSERT, UPDATE, DELETE, JOIN 중요! SELECT SELECT 구문 : 관계형 데이터베이스 시스템에서 데이터를 읽어 들일 때 사용하는 SQL 구문 SELECT colum1, colum2, colum3, colum4 FROM table_name SELECT 구문은 WHERE 구문과 같이 사용하여 검색이나 ..

백엔드 2021.08.10

API 개발하기(미니터 : 타임라인)

타임라인 엔드포인트 마지막으로 사용자 타임라인 엔드포인트를 구현해보자! 트위터의 타임라인처럼 해당 사용자의 트윗들 그리고 팔로우하는 사용자들의 트윗들을 리턴해주는 엔드포인트다. 타임라인 엔드포인트는 데이터의 수정이 없이 받아오기만 하는 엔드포인트이므로, HTTP 메소드는 GET이 될 것이다. 그리고 타임라인 엔드포인트가 리턴하는 JSON 데이터는 다음과 같은 형태의 데이터를 리턴한다. 타임라인 엔드포인트 구현 @app.route('/timeline/', methods=['GET']) 엔드포인트의 주소에서 부분을 볼 수 있다. 엔드포인트의 주소에 해당 사용자의 아이디를 지정할 수 있게 해준다. def timeline(user_id): 타임라인 엔드포인트를 구현하는 함수에 user_id를 인자로 받는 것을 ..

백엔드 2021.08.08

API 개발하기(미니터 : 팔로우)

팔로우와 언팔로우 엔드포인트 실제 트위터와 마찬가지로 미니터에서 중요한 부분 중 하나가 또한 다른 트위터들을 팔로우(혹은 언팔로우)하고 팔로우하는 사용자들의 글과 사진을 타임라인에서 볼 수 있는 기능이다. 팔로우 혹은 언팔로우 하고 싶은 사용자의 아이디를 HTTP 요청으로 보내면 API에서 해당 요청을 처리하는 방식으로 구현할 것이다. 팔로우 엔드포인트에 전송할 JSON 데이터는 다음과 같다. { "id" : 1, "follow" : 2 } id 필드: 해당 사용자의 아이디, follow 필드: 팔로우하고자 하는 사용자의 아이디 언팔로우 엔드포인트에 전송할 JSON 데이터는 다음과 같다. { "id" : 1, "unfollow" : 2 } id 필드: 해당 사용자의 아이디, unfollow 필드: 언팔로..

백엔드 2021.08.08

API 개발하기(미니터 : 트윗)

300자 제한 트윗 글 올리기 이번에는 미니터의 메인 기능인 300자 제한 트윗(Tweet) 글 올리기 엔드포인트를 구현해보자! [ 트윗 필수 요소 ] 사용자는 300자를 초과하는 글 올릴 수 없름 300자 초과한다면 엔드포인트는 400 Bad Request 응답을 보내야 함 사용자는 300자 이내의 글을 전송하면 엔드포인트는 사용자의 글을 저장하고 있어야 함 그래서 사용자의 타임라인 엔드포인트를 통하여 읽을 수 있도록 해야 함 Tweet 엔드포인트를 호출할 때 전송하는 json 데이터는 다음과 같다. { "id" : 1 "tweet" : "My First Tweet" } id : 트윗을 보내는 해당 사용자의 아이디 tweet : 트윗 내용 엔드포인트는 다음과 같이 구현할 수 있다. app.tweets ..

백엔드 2021.08.07

API 개발하기(미니터 : 회원가입)

깔끔한 파이썬 탄탄한 백엔드 CHAPTER 5 "본격적으로 API 개발하기" 구현할 API 시스템 : 미니터(Miniter) 미니터는 미니 트위터를 줄인 말 축소된 트위터 시스템 [ 미니터의 기능 ] 회원가입 로그인 트윗 다른 회원 팔로우하기 다른 회원 언팔로우하기 타임라인(해당 사용자 그리고 사용자가 팔로워하는 사용자들의 트윗들) 회원가입 회원가입에 필요한 정보는 다음과 같다. id name email password profile 다음은 회원가입 기능을 구현하는 엔드포인트다. from flask import Flask, jsonify, request 필요한 Flask 모듈을 임포트한다. request를 통해 사용자가 HTTP 요청을 통해 전송한 JSON 데이터를 읽어들일 수 있다. jsonify는 d..

백엔드 2021.08.07

Do it! 모델 만들기

01. 모델 속성 구상하기 질문과 답변 모델에는 어떤 속성이 있어야 할까? 질문 모델에는 다음 속성이 필요하다. 속성명 설명 id 질문 데이터의 고유 번호 subject 질문 제목 content 질문 내용 create_date 질문 작성일시 답변 모델은 다음과 같은 속성이 필요하다. 속성명 설명 id 답변 데이터의 고유 번호 question_id 질문 데이터의 고유 번호(어떤 질문에 달린 답변인지 알아야 하므로 질문 데이터의 고유 번호가 필요하다) content 답변 내용 create_date 답변 작성일시 02. 질문 모델 생성하기 이렇게 구상한 속성을 바탕으로 모델을 정의해 보자. 먼저 pybo 디렉터리에 models.py 파일을 생성하고 질문 모델인 Question 클래스를 작성하자. Questio..

백엔드 2021.08.06

플라스크 ORM 라이브러리 사용하기

파이썬 ORM 라이브러리 중 가장 많이 사용하는 SQLAlchemy를 사용해 보자. 이와 더불어 파이썬 모델을 이용해 테이블을 생성하고 컬럼을 추가하는 등의 작업을 할 수 있게 해주는 Flask-Migrate 라이브러리도 사용해 보자. 01. ORM 라이브러리 설치하기 Flask-Migrate 라이브러리를 설치하면 SQLAlchemy도 함께 설치되므로 myproject 가상 환경에서 다음 명령을 수행하여 Flask-Migrate 라이브러리를 설치하자. pip install Flask-Migrate 02. 설정 파일 추가하기 파이보에 ORM을 적용하려면 config.py라는 설정 파일이 필요하다. 루트 디렉터리에 config.py 파일을 생성하고 다음과 같은 코드를 작성하자. SQLALCHEMY_DATAB..

백엔드 2021.08.06

ORM(object relational mapping)

데이터를 저장하거나 수정하는 등 데이터를 처리할 때에는 데이터베이스를 사용한다. 이때, SQL 쿼리라는 구조화된 질의를 작성하고 실행하는 등 복잡한 과정이 필요한데 ORM(object relational mapping)을 이용하면 파이썬 문법만으로도 데이터베이스를 다룰 수 있다. SQL 쿼리와 ORM 비교 id subject content 1 안녕하세요 가입 인사드립니다! 2 질문 있습니다 ORM이 궁금합니다. 이때, 구성된 question 테이블에 새로운 데이터를 삽입하는 쿼리는 보통 다음처럼 작성한다. insert into question (subject, content) values ('안녕하세요', '가입 인사드립니다!'); insert into question (subject, content) ..

백엔드 2021.08.06

블루프린트 라우트 함수 관리

from flask import Flask def create_app(): app = Flask(__name__) @app.route('/') --- 매핑 만들어줌 : 라우트 함수 def hello_pybo(): --- URL에서 /에 매핑돠는 함수 return 'Hello, pybo!' return app 이전에 작성해본 코드는 새로운 URL이 생길 때마다 라우트 함수를 create_app 함수안에 계속 추가해야 하는 귀찮음이 있다. 이를 해결해주는 클래스가 블루프린트다. 블루프린트(Blueprint) : '청사진', 플라스크에서는 URL고 호출되는 함수의 관계를 확인할 수 있는 Blueprint 클래스를 의미 → 라우트 함수를 구조적으로 관리할 수 있다. 01. 블루 프린트 생성하기 __init__...

백엔드 2021.08.04