연랩

[Microsoft AI School 6기] 4/22(83일차) 정리 - CRUD (2) 본문

MS AI school 6기

[Microsoft AI School 6기] 4/22(83일차) 정리 - CRUD (2)

parkjiyon7 2025. 4. 22. 17:43

CRUD 애플리케이션 개발

 

CRUD란

 

Create, Read, Update, Delete

데이터를 다루는 소프트웨어 애플리케이션의 기본적인 4가지 기능

 

 

게시판 만들기

with Flask

 

 

  • 질문 답변 게시판
  • 데이터 저장 , 조회 , 수정 , 삭제 등의 기능 필요
  • 데이터베이스 사용

 

 

ORM(obiect relational mapping)

 

 파이썬 문법을 활용한 데이터베이스 데이터 처리

- 데이터베이스 종류에 상관 없이 일관된 코드 유지 가능

 

ORM

 

해당하는 데이터베이스의 쿼리문으로 변경하여 준다

 

ORM

 

SQLAlchemy
- 파이썬 ORM 라이브러리 중 가장 많이 사용
- Flask-Migrate 라이브러리를 설치하면 SQLAIchemy도 함께 설치

 

pip install flask-migrate

로 설치

 

flask-Migrate를 이용한 ORM 명령어

 

flask-Migrate를 이용한 ORM 명령어

 

실습

 

데이터 베이스 설치

pip install flask-migrate

로 설치

-> SQL lite 사용

 

config.py 생성

 

config.py

 

config.py

 

ECHO기능의 경우, 어떤 쿼리를 수행하고 있는 지 알려준다.

 

app > __init__.py

 

__init__.py

 

DB 설정에 대한 정보를 __init__.py를 통해 불러온다.

이때, DB(SQLite)와 ORM(이를 다루기 위한 파이썬 모듈)을 같이 불러와야 한다.

 

터미널에서

flask db init

명령어를 실행하면

 

db

 

폴더에 migrations가 생겼음을 알 수 있다.

만일, 오류가 난다면, migration를 삭제하고 init부터 다시하는 것도 방법이다

 

Tip!

vscode에서는 코파일럿 사용이 가능하다

ctrl + i 하면 코파일럿 인라인이 나타난다

 

copilot

 

esc 누르면 코파일럿 창이 없어진다

 

데이터 베이스 테이블 만들기

app > models.py

model.py

 

여기에서 relationship의 경우, ORM 문법으로, 두 데이터 베이스 간의 관계를 명시적으로 나타내어 주는 것이다.

backref는 상호 참조가 가능하다는 뜻이다

 

relationship()

db.relationship()은 두 테이블 사이의 관계(relationship)를 정의하
쉽게 말해 "이 객체와 저 객체가 어떻게 연결돼 있는지"를 알려주는 함수

 

relationship()

 

db.relationship()에서 backref 이름은 서로 다른 모델 간이면 중복 사용 가능

 

relationship()

 

그러나 이름으로 인한 혼돈이 올 수 있어 권장되지 않음

 

__init__.py

 init_app 후에 models를 import 해야한다

 

__init__.py

 

migrate(app, db)로 flask app과 db를 연결한다.

 

ORM

 

ORM

 

ORM

 

터미널에서 

flask db migrate

 

DB 생성에 성공하면, 아래와 같이 파일이 생긴다

-> 피일명은 config에서 지정해주었던 이름으로 생성된다

 

db

 

터미널에서 

flask db upgrade

 

db

 

upgrade를 입력하면 sql문을 확인할 수 있다.

 

flask-migrate 명령어

 

flask-migrate 명령어

 

DBeaver 설치

 

https://dbeaver.io/download/
 

Download | DBeaver Community

Download DBeaver Community 25.0.3 Released on April 20th 2025 (Milestones). It is free and open source (license). Also you can get it from the GitHub mirror. System requirements. DBeaver PRO 25.0 Released on March 10th, 2025 PRO version website: dbeaver.co

dbeaver.io

 

설치 후 좌측 플러그 아이콘 클릭

 

데이터 베이스 연결

 

SQL lite 선택

Test Connection > Driver 설치

 

데이터 베이스 연결

 

이후 완료 클릭하면 아래와 같은 화면이 뜬다

 

데이터베이스 연결

 

기존 만들어 놓은 데이터 베이스의 구조를 볼 수 있다.

alembic_version은 파이썬이 관리하기 위한 테이블이다.

 

데이터 베이스 연결

 

파이썬 코드로 데이터 베이스를 변경하였다면, 새로고침을 해주어야 반영이 된다.

 

create_app()

create_app()은 Flask 앱 인스턴스를 생성하고 필요한 설정을 적용하는 함수

 

데이터베이스 연결

 

Flask에서 create_app()으로 만든 건 "하나의 웹 애플리케이션 서버" 라고 보면 된다.

 

database.py 생성

__init__.py에서 아래의 코드를 가져온다.

create_app()

 

__init__.py

 

create_app()

 

create_app()으로 감싸주어 아무데서나 접근할 수 없게 한다

 

models.py 

참조 형식 변경

 

create_app()

 

이제 app 변수가 전역이 아니므로 database를 참조하도록 바꿔준다.

 

 

sql 실습 - CRUD

 

sql_view.py

 

sql 실습

 

이와 같이 user 테이블에 데이터를 넣어줄 수 있다

 

sql 실습

 

위와 같이 해당 페이지로 접속하면 해당 데이터가 데이터베이스로 넘어간다.

 

sql

 

데이터가 들어가는 것을 알 수 있다.

 

logger

import logging
from logging.handlers import RotatingFileHandler

 

위 라이브러리 추가

 

__init__.py

 

 

logger

 

Level 예시

  • logging.DEBUG
  • logging.INFO

 

logger

 

print없이 문구가 출력됨을 알 수 있다

 

logs > app.log

 

logger

 

또한, 로그 파일이 생성되었음을 알 수 있다.

 

logger

 

여기에 인코딩 옵션을 추가하면 한글을 깨짐 없이 볼 수 있다.

 

logger

 

Question Table 데이터 입력

sql_view.py

 

question

 

이에 맞게 브라우저에서 실행하면

 

question

 

이와 같이 나오며,

 

question

 

데이터가 입력됨을 알 수 있다.

 

read

question에 있는 거 다 읽어오도록 구성

 

read

 

read

 

위의 테이블에 있는 데이터를 읽어온다.

 

read

 

이를 브라우저에서 살펴보면 다음과 같다.

 

update

제목과 modify_date 변경

 

update

 

이를 브라우저에서 보면, 

 

update

 

이와 같이 나온다.

 

update

 

또한, 데이터베이스에서 1번 질문의 제목과 modify_date가 바뀌었음을 알 수 있다.

 

delete

1번 질문 삭제

 

delete

 

1번 질문을 삭제하기 위한 코드는 위와 같다.

이를 실행한 뒤, 데이터베이스를 보면 1번 질문이 삭제되었음을 알 수 있다.

 

delete

 

answer 테이블

 

answer

 

마찬가지로 answer를 추가하는 코드는 위와 같다.

이를 실행하면, 

 

answer

 

데이터베이스에서 answer 테이블을 살펴보면 위와 같다.

 

 

오늘의 간단한 후기

 

CRUD는 SQL의 가장 기본 문법을 일컫는 말인 것 같다. python에서 ORM으로 데이터베이스를 다룰 수 있는 것을 배울 수 있는 기회여서 좋은 것 같다. python은 여러 모듈 및 라이브러리와 호환이 좋아 할 수 있는 일이 많은 것 같다. 

 

 

출처

 

[1] DBeaver Community, "Download DBeaver Community Edition," Available: https://dbeaver.io/download/

 

-If any problem for references, or any questions please contact me by comments.

-This content is only for recording my studies and personal profiles

 

일부 출처는 사진 내에 표기되어 있습니다

본문의 내용은 학습과 개인 profile 이외의 다른 목적이 없습니다

출처 관련 문제 있을 시 말씀 부탁드립니다

상업적인 용도로 사용하는 것을 금합니다

본문의 내용을 Elixirr 강의자료 내용(인선미 강사님)을 기반으로 제작되었습니다

Micrsoft에서 제공하는 정보를 담고 있습니다.

깃허브 소스코드의 내용을 담고 있습니다

본문의 내용은 MS AI School 6기의 강의 자료 및 수업 내용을 담고 있습니다.

반응형