우리 눈에 보이진 않지만, 사실 Database에는 Index라는 순서대로 데이터들이 정렬되어 있다.

행/열의 생김새가 정해진 테이블 형태로, Excel에 데이터를 저장하는 것과 유사하다.
데이터 50만 개가 적재된 상태에서 갑자기 중간에 열을 하나 더하기는 어렵다.
그러나 정형화되어 있는 만큼 오류가 적고 데이터의 일관성이나 분석에 용이할 수 있습니다.
딕셔너리 형태로 데이터를 저장해두는 Database이다.
따라서 데이터 하나 하나 마다 같은 값들을 가질 필요가 없다.
자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족할 수 있다.
변화가 잦은 스타트업에서 주로 사용한다고 한다.
아주 간단하게, 데이터베이스는 일반적으로 파일로 저장된다.
그리고 그 파일을 열어보기 위한 프로그램(RDBMS)을 설치하는 것이 필요하다.
데이터 베이스 중 하나인 SQLite도 하나의 파일로 이루어져 있다.
SQLite3 Editor VScode Extension을 설치해서 SQLite를 사용해보자.
환경 설정을 위해 현재 폴더에 database.db 파일 생성 (환경 설정 후 삭제하면 된다)
파일 우클릭
open with 클릭
기본 설정 변경 위해 Configure default editor fot *.db … 클릭
SQLite3 Editor 선택
database.db 파일 선택 시 아래 화면이 나오면 설정 완료

Sqlite 확장 프로그램을 사용하면, 아래처럼 바로 데이터를 수정할 수도 있다.

작지만 빠르고 탄탄하므로 SQLite는 세계에서 가장 많이 사용되는 데이터베이스 중 하나이다.
파일이름.db 형식으로 파일을 만들기만 하면 손쉽게 사용할 수 있다.SQLite와 같은 데이터베이스에서 데이터를 다루기 위해서는 보통 SQL을 사용해야 하지만, ORM을 사용하면 SQL을 사용하는 것보다 손쉽게 데이터베이스를 다룰 수 있다.
ORM(Object Relational Mapping, 객체-관계 매핑)은 객체와 관계형 데이터베이스의 데이터를 자동으로 매핑(연결)해주는 것을 말한다.
클래스를 사용하고,테이블을 사용하기 때문에,간단하게 가자면, ORM은 프로그래밍 언어(지금은 Python)로 데이터베이스를 다루는 방법이라고 알아두면 된다.
Python으로 SQLAlchemy를 다루려면 가상 환경을 세팅해야 한다.
DB 폴더 구조
- - -
DB
|— venv (✅ 가상환경)
|— app.py (✅ 서버)
|— database.db (✅ 데이터베이스)
DB 폴더구조도 규칙 정해진대로!
pip install Flask-SQLAlchemy 로 패키지 설치
SQLAlchemy를 사용하면 파이썬 코드로 SQL 데이터 베이스를 다룰 수 있다.
pip list로 어떤 패키지가 다운 받아져 있는지 확인 가능
from flask import Flask
import os
from flask_sqlalchemy import SQLAlchemy
# 🔥 SQLAlchemy를 사용하여 파이썬 코드로 SQL 데이터 베이스를 다룰 수 있다.
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///' + os.path.join(basedir, 'database.db')
db = SQLAlchemy(app)
from flask import Flask
import os
from flask_sqlalchemy import SQLAlchemy
# 🔥 SQLAlchemy를 사용하여 파이썬 코드로 SQL 데이터 베이스를 다룰 수 있다.
basedir = os.path.abspath(os.path.dirname(__file__))
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] =\
'sqlite:///' + os.path.join(basedir, 'database.db')
db = SQLAlchemy(app)
# ✅ Song 모델 정의
class Song(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String, nullable=False)
artist = db.Column(db.String, nullable=False)
title = db.Column(db.String, nullable=False)
image_url = db.Column(db.String, nullable=False)
def __repr__(self):
return f'{self.artist} {self.title} 추천 by {self.username}'
with app.app_context():
db.create_all()
예를 들어 Excel 파일의 설계도를 만든 것이라고 생각하면 된다.

훑으면서 나가는 거니까 챗 지피티한테 물어보면서...

source venv/Scripts/activate 로 활성화할 수 있다.flask shell로 (venv)가 있는지 확인한다.flask shell를 입력한다.>>> from app import db, Song (엔터)
>>> db.create_all()
db.create_all() db.drop_all()
database.db 파일을 클릭했을 때 아래와 같이 원하는 데이터가 테이블에 들어가 있으면 된다.
flask shell이 켜져 있는지 확인하고,
# ✅ 데이터 만들기
song = Song(username="추천자", title="노래제목",
artist="가수", image_url="이미지 주소")
# ✅ DB에 데이터 업로드
db.session.add(song)
# ✅ DB에 데이터 저장
db.session.commit()

# ✅ 데이터 여러개 만들기
song1 = Song(username="추천자", title="노래제목1",
artist="가수1", image_url="이미지 주소1")
song2 = Song(username="추천자", title="노래제목2",
artist="가수2", image_url="이미지 주소2")
song3 = Song(username="추천자", title="노래제목3",
artist="가수3", image_url="이미지 주소3")
# ✅ DB에 데이터 하나 씩 업로드
db.session.add(song1)
db.session.add(song2)
db.session.add(song3)
# ✅ DB에 데이터 모두 저장
db.session.commit()
터미널 flask shell에 테이블이름.query.all() 을 실행하면 Database에 있는 모든 데이터를 조회할 수 있다.
Song.query.all()
리스트 형식으로 들어가 있다.
리스트 형식으로 사용할 수 있다.>>> song_list = Song.query.all()
>>> song_list[0] # 가수:노래제목 추천 by 추천자
>>> song_list[0].title # 노래 제목
Song.query.filter_by(조건).all() 을 사용하면 조건에 맞는 데이터를 전부 가져올 수 있다.Song.query.filter_by(username='추천자').all()
# [가수:노래제목 추천 by 추천자, 가수1:노래제목1 추천 by 추천자]
Song.query.filter_by(id=1).first() # 가수2:노래제목2 추천 by 추천자
Song.query.filter_by(title='노래제목').first() # 가수:노래제목 추천 by 추천자
데이터를 가져오고, 파이썬에서 변수의 값을 변경하는 것처럼 수정하면 된다.
📌 수정 사항을 반영하기 위해서는 꼭
업로드add()하고
저장db.session.commit()해줘야 한다!
song_data = Song.query.filter_by(id=4).first()
song_data.title = '변경된제목'
db.session.add(song_data)
db.session.commit()
데이터 수정과 마찬가지로 데이터 1개를 들고 온 다음 db.session.delete()로 삭제 하면된다.
📌 데이터 삭제에 대한 사항을 반영하기 위해서는 꼭
저장db.session.commit()해줘야 한다!
delete_data = Song.query.filter_by(id=4).first()
db.session.delete(delete_data)
db.session.commit()
외우기보다는 원리를 파악하여 찾아서 사용하면 된다.
핵심은 데이터를 저장하고, 찾고, 바꾸고, 지우는 것이다.
# 데이터를 DB에 저장하기
song = Song(username="추천자", title="노래제목",
artist="가수", image_url="이미지 주소")
db.session.add(song)
db.session.commit()
# 모든 데이터 조회하기
song_list = Song.query.all()
# 데이터 1개 가져오기
Song.query.filter_by(id=3).first()
# 데이터 변경하기
song_data = Song.query.filter_by(id=4).first()
song_data.title = '변경된제목'
db.session.add(song_data)
db.session.commit()
# 데이터 삭제하기
delete_data = Song.query.filter_by(id=4).first()
db.session.delete(delete_data)
db.session.commit()