환경 설정

-DEBUG / Development mode 설정하기
개발 서버를 시작하면 디버거가 표시되고 코드가 변경되면 자동으로 서버가 다시 로드된다.
개발할 때는 이렇게 하는 것이 좋지만, 디버그 출력을 통해 애플리케이션의 내부 특성이 드러날 수 있기 때문에 프로덕션 코드에서는 디버그 문을 제거해야 한다.
FLASK_APP=app.py FLASK_ENV=development FLASK_DEBUG=1 flask run
SQL(Structured Query Language)
SQL은(구조적 질의 언어) 데이터베이스를 제어하고 관리한다.
- DDL(Data Definition Language) : 데이터 정의어
- DML(Data Manipulation Language) : 데이터 조작어
- DCL(Data Control Language) : 데이터 제어어
DML : 데이터 조작어
정의된 데이터베이스에 입력된 레코드를 조회, 수정, 삭제하는 등의 역할을 한다.
- SELECT : 데이터를 조회하고 추출
- INSERT, UPDATE, DELETE : 데이터를 직접 변경하기
PyMySQL
Python 전용 데이터베이스 커넥터이다.
MySQL 서버와 통신할 수 있게 만들어주는 라이브러리이다.
-
설치하기
pip install PyMySQL
-
config.py 생성하기

- connection.py 생성하기

connect()
메소드를 통해 DB와 연결해준다.
위에서 정의한 get_connection
메소드는 데이터베이스를 관리하는 persistence layer(model)
에서 인자로 받아 사용하게 된다.
참고자료
데이터 베이스 연결
- model > user_dao(Database Access Object) 생성하기
- 데이터 접속을 담당하는 객체이다.
- dao 객체들을 통해 데이터베이스를 처리한다.

-
fetchall()
모든 데이타를 한꺼번에 클라이언트로 가져올 때 사용된다.
-
execute()
MySQL 쿼리를 매개 변수로 받아들이고 주어진 쿼리를 실행한다.
Cursor
- 연결한 DB와 상호작용 하기위해 curosr 객체를 생성한다.
- cursor는 테이블에서 여러개의 행을 쿼리한 후에 행 집합을 한 행씩 처리하는 방식이다.
- Dictoionary Cursor는 Row 결과를 pymysql 디폴트인 tuple 형식으로 리턴되지 않고 Dictionary 형태로 리턴한다.
- python with as 문
✔️ 커서의 처리 순서는 커서 선언 -> 커서 열기 -> 커서 사용 -> 커서 닫기이다.
✔️ Cursor도 자원이므로 close하는 것은 중요하다.
✔️ with as문을 사용해 구문이 끝나면 자동으로 close를 진행해준다.
