항해99/웹 개발 종합반 강의
[스파르타코딩클럽] 웹개발 종합반 - 4주차 (4-1~8)
nsean
2023. 12. 28. 01:45
이번주에 배울 내용은 데이터베이스와, 전반적인 웹페이지의 프런트-백엔드를 작성하는 방법과 데이터베이스의 기초에 대한 것이었다.
Project 폴더 구조
- - -
Project
|— venv
|— app.py (서버)
|— templates
|— motto.html (클라이언트 파일)
|— music.html (클라이언트 파일)
이러한 형태가 기본적인 웹 프로젝트의 폴더 구조였다.
이후 내용은 3주차 내용을 복습하는 내용이었다.
Database에 대하여 배우게 됐는데, database의 사용 목적은 데이터들을 잘 정리하여 정확하고 빠르게 목표 데이터를 찾기 위해서이다.
이러한 db에는 크게 두 종류가 있는데, 표와 같은 형태로 작성하는 SQL과 딕셔너리 형태로 데이터를 저장하는 NoSQl이 있다.
SQL은 데이터의 중간에 열을 더하기는 어렵지만, 정형화되어있어, 데이터의 일관성/분석에 용이하며, NOSQL은 자유로운 형태의 데이터 적재에 유리한 대신, 일관성이 부족하다.
이번주 수업에서는 SQLITE3를 활용하였다.
DB 폴더 구조
- - -
DB
|— venv
|— app.py (서버)
|— database.db (데이터베이스)
FLASK에서의 데이터베이스 폴더 구조이다.
DB를 다루기 위해선 Flask-SQLAlchemy를 pip로 설치한 후에, 다음과 같은 코드들을 사용하여 기본적인 준비를 해줄 수 있다.
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):
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에 진입하여 db 테이블을 생성할 수 있다.
(venv)가 있는지 확인하세요..!
$ flask shell (엔터)
>>> from app import db, Song (엔터)
>>> db.create_all()