ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Python, SQLite, SQLAlchemy, Database 조작
    Python 2024. 6. 27. 18:45

    data는 뭐랄까.. 재미있나.. 재미없나.. 재미없나..

    SQLite

     

    Python에는 기본적으로 SQLite가 내장되어 있으므로 별도 설치 없이 VScode에서 파일이름.db 형식으로 파일을 만들기만 하면 손쉽게 사용할 수 있다.

     

    (venv 라이브러리 이용)

     

    터미널, 설치

    pip install Flask-SQLAlchemy

     

    app.py에 Flask와 Database를 연결하는 코드 입력

    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)

     

    그리고 바로 아래에 불러올 데이터베이스 코드 입력

    엑셀처럼 설계도라고 볼 수 있음

    id = db.Column(db.Integer, primary_key=True)

    이게 각 컬럼에 해당하는 코드

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

     

     

    터미널, 아래 코드 입력  후 enter

    flask shell

     

     

    >>> from app import db, Song

     

    >>> db.create_all()

     

     

    그런 다음 database.db file에 들어가보면

     

    이렇게 데이터베이스를 입력할 수 있게 된다.

     

    이제,

    터미넬에서 아래 두 코드 입력 된 상태에서

    >>> from app import db, Song
    >>> db.create_all()

     

    아래와 같이 데이터를 넣으면 입력이 된다.

    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.session.add(song1)
    db.session.add(song2)
    db.session.add(song3)
    
    db.session.commit() #데이터를 한번에 저장

     

    add데이터 업로드

    commit 데이터 저장 

     

     

    데이터 조회는 

    모든 데이터를 다 조회하려면 

    Song.query.all()

     

    그럼 이렇게 리스트 형태로 출력됨

    [가수 노래제목 추천 by 추천자, 가수 노래제목 추천 by 추천자, 가수1 노래제목1 추천 by 추천자, 가수2 노래제목2 추천 by 스파르타, 가수3 노래제목3 추천 by 스파르타]

    song_list = Song.query.all() #list형태이기 때문에 이렇게 해주고
    song_list[0] #이렇게 원하는 데이터의 인덱스값을 넣어주면 원하는 데이터만 출력가능

     

     

    데이터 수정

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

     


    코드 요약

     

    # 데이터를 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()
Designed by Tistory.