Database
: Index라는 순서로 데이터들을 정렬시켜 저장해놓음. 일반적으로 파일로 저장됨.
이 파일(DB)을 열어보기 위한 프로그램이 아래 RDBMS 또는 NoSQL.
1) SQL(RDBMS) - 행/열의 생김새가 정해진 Excel에 데이터를 저장하는 것과 유사. 정형화됨.
ex. SQLite, MS-SQL, My-SQL 등
2) NoSQL - 딕셔너리 형태로 데이터를 저장해두는 DB. 자유로운 형태의 데이터 적재.
ex. MongoDB
실습
- 우선 SQLite3 Editor 확장 프로그램을 설치하고 환경설정을 해줘야함.
- database.db 파일 생성 후 해당 파일을 마우스 우클릭, 연결 프로그램.. 클릭
- .db에 대한 기본 편집기 구성.. 클릭, SQLite3 Editor 클릭.
- database.db창 닫은 후 database.db 파일 삭제.
이제 사용하기 !
- 명령팔레트 열고 가상환경 만들기.
- 라이브러리 설치 pip install Flask-SQLAlchemy
- app.py 파일 생성.
- database.db 파일 생성.
- app.py에 다음 코드 작성.
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)
이 아래에 설계도 작성.
예를 들어, 노래에 대한 데이터를 저장하고자 하는 경우 다음과 같이 작성.
class Song(db.Model): #설계도. Song이라는 이름의 시트가 만들어진다.
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()
- 이제부터 터미널에서 작성 !!!
[테이블 만들기]
flask shell
>>> from app import db, Song
>>> db.create_all() 반대로, 테이블을 없애고 싶다면 db.drop_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()
- 모든 결과값 보기 → 테이블이름.query.all()
- 리스트 형식으로도 사용 가능!
song_list = Song.query.all()
song_list[0]
song_list[0].title
- 특정 조건으로 데이터 가져오기 → 테이블이름.query.filter_by(username='추천자').all()
- 데이터 1개 가져오기 → 테이블이름.query.filter_by(id=번호).first()
- 데이터 수정하기 → db.session.add(데이터)
- 데이터 삭제하기 → delete_data = Song.query.filter_by(id=4).first()
db.session.delete(delete_data)
- db.session.commit() 도 잊지말고 변경이 일어날 때마다 해주기.
'TIL' 카테고리의 다른 글
2주차 Day 1. up&down 게임과 가위바위보 게임을 만들어보자 (0) | 2024.07.01 |
---|---|
1주차 Day5. PyCharm사용 및 python 문법 정리 (0) | 2024.06.28 |
1주차 Day3. Flask를 활용한 웹개발 + Git&Github 사용법 (0) | 2024.06.26 |
1주차 Day2. Fetch, Python, Flask, template (0) | 2024.06.25 |
1주차 Day1. 웹개발 기초 (0) | 2024.06.24 |