Flask : SqlAlchemy 로 DB 다루기

들어가며

Flask는 단순성과 유연성으로 유명한 Python용 웹 프레임워크입니다. “SQLAlchemy”는 Python의 SQL 데이터베이스를 위한 강력한 툴킷입니다. Flask-SQLAlchemy를 결합하면 Flask 애플리케이션에서 데이터베이스 작업을 쉽게 할 수 있습니다.

Flask-SQLAlchemy은 SQL이 아닌 ORM을 사용해서 데이터베이스를 다룰 수 있게 해줍니다.

ORM은 DBMS마다 조금씩 다른 SQL을 동일하게 동작할 수 있도록 만들어 준답니다. 이런 게 있다니… 참 유용해 보입니다…

환경설정

pip를 사용하여 Flask-SQLAlchemy를 설치할 수 있습니다.

pip install Flask-SQLAlchemy

app.py에서 Flask 애플리케이션을 초기화합니다.

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///database.db'
db = SQLAlchemy(app)

if __name__ == '__main__':
    app.run(debug=True)

모델 정의

SQLAlchemy 구문을 사용하여 데이터베이스 모델을 정의합니다.

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

모델 정의

Visual Studio Code에서 터미널을 열고 다음 명령을 실행하여 데이터베이스를 만들고 데이터베이스 테이블을 초기화합니다.

flask shell


아래 명령어를 입력합니다

from app import db, Song
db.create_all()

명령어를 입력한 뒤 database.db를 보면 테이블이 생성된 것을 확인 할 수 있습니다.

SqlAlchemy을 사용해서 데이터 조작

데이터 저장하기

터미널에 아래 명령어를 입력해봅니다.

song = Song(username="추천자", title="노래제목", 
            artist="가수", image_url="이미지 주소")
db.session.add(song)
db.session.commit()

데이터베이스에 데이터가 입력된 것을 확인 할 수 있습니다.

데이터를 DB에 저장하기

song = Song(username="추천자", title="노래제목", 
            artist="가수", image_url="이미지 주소")
db.session.add(song)
db.session.commit()

모든 데이터 조회하기

Song.query.all()

변수에 넣어서 차례로 볼 수도 있음

song_li = Song.query.all()
song_li[0]
song_li[0].title

특정 데이터 조회하기

Song.query.filter_by(=찾는 값).all()

하나의 레코드만 가져오기

뒤에 fisrt() 만 붙여주면 됩니다.

Song.query.first()

조회한 값에서 하나만 보고 싶을때도 뒤에 first()만 붙여주면 됩니다.
Song.query.filter_by(=찾는 값).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()

https://www.sqlalchemy.org/

Leave a Comment

목차