일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- msai
- 마이크로소프트 ai school 6기
- microsoft
- microsoft ai school
- micsrosoft ai
- 마이크로소프트 ai 스쿨
- microsoft ai
- 마이크로소프트
- MS
- 마이크로소프트 ai 스클
- 마이크로소프트 AI
- microsoft ai school 6기
- 마이크로소프트 ai 스쿨 6기
- Today
- Total
연랩
[Microsoft AI School 6기] 4/22(83일차) 정리 - CRUD (2) 본문
CRUD 애플리케이션 개발
CRUD란
Create, Read, Update, Delete
데이터를 다루는 소프트웨어 애플리케이션의 기본적인 4가지 기능
게시판 만들기
with Flask
- 질문 답변 게시판
- 데이터 저장 , 조회 , 수정 , 삭제 등의 기능 필요
- 데이터베이스 사용
ORM(obiect relational mapping)
파이썬 문법을 활용한 데이터베이스 데이터 처리
- 데이터베이스 종류에 상관 없이 일관된 코드 유지 가능
해당하는 데이터베이스의 쿼리문으로 변경하여 준다
SQLAlchemy
- 파이썬 ORM 라이브러리 중 가장 많이 사용
- Flask-Migrate 라이브러리를 설치하면 SQLAIchemy도 함께 설치
pip install flask-migrate
로 설치
flask-Migrate를 이용한 ORM 명령어
실습
데이터 베이스 설치
pip install flask-migrate
로 설치
-> SQL lite 사용
config.py 생성
ECHO기능의 경우, 어떤 쿼리를 수행하고 있는 지 알려준다.
app > __init__.py
DB 설정에 대한 정보를 __init__.py를 통해 불러온다.
이때, DB(SQLite)와 ORM(이를 다루기 위한 파이썬 모듈)을 같이 불러와야 한다.
터미널에서
flask db init
명령어를 실행하면
폴더에 migrations가 생겼음을 알 수 있다.
만일, 오류가 난다면, migration를 삭제하고 init부터 다시하는 것도 방법이다
Tip!
vscode에서는 코파일럿 사용이 가능하다
ctrl + i 하면 코파일럿 인라인이 나타난다
esc 누르면 코파일럿 창이 없어진다
데이터 베이스 테이블 만들기
app > models.py
여기에서 relationship의 경우, ORM 문법으로, 두 데이터 베이스 간의 관계를 명시적으로 나타내어 주는 것이다.
backref는 상호 참조가 가능하다는 뜻이다
relationship()
db.relationship()은 두 테이블 사이의 관계(relationship)를 정의하
쉽게 말해 "이 객체와 저 객체가 어떻게 연결돼 있는지"를 알려주는 함수
db.relationship()에서 backref 이름은 서로 다른 모델 간이면 중복 사용 가능
그러나 이름으로 인한 혼돈이 올 수 있어 권장되지 않음
__init__.py
init_app 후에 models를 import 해야한다
migrate(app, db)로 flask app과 db를 연결한다.
터미널에서
flask db migrate
DB 생성에 성공하면, 아래와 같이 파일이 생긴다
-> 피일명은 config에서 지정해주었던 이름으로 생성된다
터미널에서
flask db upgrade
upgrade를 입력하면 sql문을 확인할 수 있다.
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에서 아래의 코드를 가져온다.
__init__.py
create_app()으로 감싸주어 아무데서나 접근할 수 없게 한다
models.py
참조 형식 변경
이제 app 변수가 전역이 아니므로 database를 참조하도록 바꿔준다.
sql 실습 - CRUD
sql_view.py
이와 같이 user 테이블에 데이터를 넣어줄 수 있다
위와 같이 해당 페이지로 접속하면 해당 데이터가 데이터베이스로 넘어간다.
데이터가 들어가는 것을 알 수 있다.
logger
위 라이브러리 추가
__init__.py
Level 예시
- logging.DEBUG
- logging.INFO
print없이 문구가 출력됨을 알 수 있다
logs > app.log
또한, 로그 파일이 생성되었음을 알 수 있다.
여기에 인코딩 옵션을 추가하면 한글을 깨짐 없이 볼 수 있다.
Question Table 데이터 입력
sql_view.py
이에 맞게 브라우저에서 실행하면
이와 같이 나오며,
데이터가 입력됨을 알 수 있다.
read
question에 있는 거 다 읽어오도록 구성
위의 테이블에 있는 데이터를 읽어온다.
이를 브라우저에서 살펴보면 다음과 같다.
update
제목과 modify_date 변경
이를 브라우저에서 보면,
이와 같이 나온다.
또한, 데이터베이스에서 1번 질문의 제목과 modify_date가 바뀌었음을 알 수 있다.
delete
1번 질문 삭제
1번 질문을 삭제하기 위한 코드는 위와 같다.
이를 실행한 뒤, 데이터베이스를 보면 1번 질문이 삭제되었음을 알 수 있다.
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기의 강의 자료 및 수업 내용을 담고 있습니다.
'MS AI school 6기' 카테고리의 다른 글
[Microsoft AI School 6기] 4/24(85일차) 정리 - 커리어 멘토링(4) (0) | 2025.04.25 |
---|---|
[Microsoft AI School 6기] 4/23(84일차) 정리 - CRUD (3) (0) | 2025.04.23 |
[Microsoft AI School 6기] 4/21(82일차) 정리 - CRUD (1) (0) | 2025.04.21 |
[Microsoft AI School 6기] 4/17(80일차) 정리 - Open AI 프로젝트(2차 프로젝트) (10) (0) | 2025.04.17 |
[Microsoft AI School 6기] 4/16(79일차) 정리 - Open AI 프로젝트(2차 프로젝트) (9) (0) | 2025.04.16 |