SQLite 란?

현정재·2024년 6월 11일
0

Database(DB)는 왜 사용할까?

어릴 적 내가 원하는 옷을 꺼내 입려는데 옷이 보이질 않는다. 엄마가 내 옷을 정리해 주셨기 때문에 어디에 무슨 옷이 있는지 몰라 원하는 옷을 꺼내 입으려면 한참 찾아야 하는 경우가 종종 있었다. 어디에 무엇이 있는지 알기 쉽게 하기 위해 DB를 사용한다. 즉, 정돈되게 질서있게 데이터를 보관하기 위해 사용한다.

SQLite는 이런 DB중의 하나다.

지금 강의를 보며 사용하는 에디터는 VScode 인데 python에 기본적으로 SQLite가 내장되어 있어서 별도로 설치를 안해도 된다. 그저 파일이름.db 형식으로 파일을 만들기만 하면 사용할 수 있다.

SQLlchemy를 가상환경에 pip install Flask-SQLlchemy를 입력하면 패키지가 설치된다. 이것은 python 프로그래밍 언어용 오픈 소스 SQL 툴킷 및 ORM(Object-Relational Mapping) 라이브러리이다. 모든게 처음이다 보니 모르는 단어가 많다... 또 검색!

ORM이란?

ORM은 Object-Relational Mapping의 약자입니다. 객체 지향 프로그래밍 언어에서 호환되지 않는 시스템 간에 데이터를 변환할 수 있는 프로그래밍 기술입니다. 데이터베이스의 컨텍스트에서 ORM은 관계형 데이터베이스 관리 시스템의 테이블에 개체를 매핑하는 데 사용된다고 되어있다.

Flask 와 DB를 연결하는 코드

from flask import Flask
import os
from flask_sqlalchemy import SQLAlchemy

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)

테이블 생성과 app.py에 DB 모델정의

테이블 만들기
db.create_all() 로 실제로 사용할 테이블(시트)을 만들 수 있는데요.
만약 테이블을 없애고 싶다면 db.drop_all() 을 해주시면 됩니다.
Tip) 복사 붙여넣기 하려면 마우스 오른쪽 클릭을 해주시면 됩니다.

from app import db, Song (엔터)
db.create_all()

lass 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()

.db 파일에 테이블 목록이 만들어 진다. id, username, artist, title, image_url 첫째줄에 이러한 이름으로 적인 표가 만들어진다.

DB에 데이터 넣기

song1 = Song(username="추천자", title="노래제목1",
artist="가수1", image_url="이미지 주소1")

db.session.add(song1) #표의 두번째 줄에 song1 변수에 담긴 내용 추가
db.session.commit() # 저장하기. DB에 변화가 있으면 저장을 해야함

데이터 조회하기

Song.query.all()

입력하면 내용이 출력된다.

특정 조건으로 데이터 가져오기

Song.query.filter_by(username='추천자').all()
[가수:노래제목 추천 by 추천자, 가수1:노래제목1 추천 by 추천자] 가 출력

원하는 데이터를 1개 가져오려면 .first() 를 사용
Song.query.filter_by(id=1).first() # 가수1:노래제목1 추천 by 추천자
Song.query.filter_by(title='노래제목').first() # 가수:노래제목 추천 by 추천자

데이터 수정하기

song_data = Song.query.filter_by(id=1).first() #데이터 하나를 먼저 가져온 다음 수정을 해야함.
song_data.title = '변경된제목'

db.session.add(song_data)
db.session.commit() #title에 노래제목이 아닌 변경된제목 으로 출력

데이터 삭제하기

delete_data = Song.query.filter_by(id=1).first() #수정과 같이 데이터 하나를 먼저 변수에 담은 후 삭제를 한다
db.session.delete(delete_data)
db.session.commit()

오늘 내용을 공부하면서 느낀점은 왜 사용하는지 머리로는 알겠는데 코드로써 왜 사용해야 되는지 의문이 들긴하다.. 좀더 배우면서 하나씩 찾아보면 정리가 되겠지?!

profile
wonttock

0개의 댓글