1~3일차 배운것을 종합하여 PJT 생성.
#app.py
# 필수 라이브러리
'''
0. Flask : 웹서버를 시작할 수 있는 기능. app이라는 이름으로 플라스크를 시작한다
1. render_template : html파일을 가져와서 보여준다
'''
from flask import Flask, render_template
app = Flask(__name__)
@app.route("/")
def home():
name = '라미'
motto = '히히 사는게 왜이래'
context = {
"name" : name,
"motto": motto,
}
return render_template('motto.html', data = context)
@app.route("/music")
def music():
return render_template('music.html')
# 클라이언트에서 받은 요청 변수로 사용하기 <name> -> 매개변수로 전달 됨
@app.route("/iloveyou/<name>/")
def iloveyou(name):
motto = f"{ name } 짱이야"
context = {
'name': name,
'motto' : motto,
}
return render_template('motto.html', data=context)
if __name__ == "__main__":
app.run(debug=True)
motto.html / music.html
flask url_for() 사용하여 navbar 메뉴 클릭시 페이지 이동 될 수 있도로 기능 추가
정상 동작 확인
motto.html music.html
특성 RDBMS NoSQL 데이터 모델 정형화된 테이블 및 관계 다양한 모델 (문서, 키-값, 열 지향 등) 스키마 고정된 스키마 유연한 스키마 트랜잭션 ACID 트랜잭션 지원 ACID를 완전히 보장하지 않는 경우가 많음 Query Language SQL 데이터베이스마다 고유한 쿼리 언어 또는 SQL과 유사한 언어 확장성 주로 수직 확장 주로 수평 확장 프로젝트 유형 복잡한 관계 및 정형 데이터 대용량, 비정형 또는 다양한 형태의 데이터를 다루는 프로젝트 RDBMS 예시:
- MySQL
- PostgreSQL
- Oracle Database
- Microsoft SQL Server
NoSQL 예시:
- MongoDB (문서 지향)
- Cassandra (열 지향)
- Redis (키-값 저장소)
- Neo4j (그래프 데이터베이스)
VSCode 확장설치
환경설정
pjt folder에.db파일 생성 - 우클릭 - 연결프로그램 -.db에 대한 기본 편집기 구성 - SQLite3 Editor 클릭
.db 형식으로 파일을 만들면 사용 가능하다.SQLAlchemy로 db 연결 & 테이블 만들기
1) db 폴더 생성
2) 가상 환경 생성
3) app.py 파일 생성
4) database.db 파일 생성
Flask-SQLAlchemy 패키지 설치
터미널 : pip install Flask-SQLAlchemy 입력
#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):
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 shellenter
from app import db, Songenter
db.create_all()enter# column에 추가할 데이터 생성 song = Song(username="추천자", title="노래제목", artist="가수", image_url="이미지 주소") # 데이터 업로드 db.session.add(song) # 업로드한 데이터 commit(저장) db.session.commit()#테이블 데이터 조회 : 테이블명.query.all() - 리스트 형태로 테이블 데이터 조회 가능 Song.query.all() [가수 노래제목 추천 by 추천자, 가수1 노래제목1 추천 by 추천자, 가수2 노래제목2 추천 by 스파르타, 가수3 노래제목3 추천 by 스 파르타]#테이블의 데이터에 접근하는 법 Song_list = Song.query.all() song_list[0] #리스트를 변수로 저장하여 리스트 인덱스로 접근하여 데이터 확인 가수 노래제목 추천 by 추천자 song_list[0].title #list[].value로 각 column의 데이터에 접근 가능 '노래제목'#특정 조건으로 데이터 가져오기 / 테이블명.query.filter_by(조건).all() >> Song.query.filter_by(username='추천자').all() #username 이 추천자인 사람 모두 조회 [가수 노래제목 추천 by 추천자, 가수1 노래제목1 추천 by 추천자]# 데이터 변경 # 변수에 변경할 데이터 담기 >> song_data = Song.query.filter_by(id=4).first() # 변경할 데이터 변경 >> song_data.title = '제목변경' # db에 업데이트 >> db.session.add(song_data) # commit >> db.session.commit() # 정상변경 확인 >> Song.query.filter_by(id=4).first() 가수3 제목변경 추천 by 스파르타#db 삭제 #삭제할 데이터 담기 >> delete_data = Song.query.filter_by(id=3).first() # 세션에서 삭제 >> db.session.delete(delete_data) # commit >> db.session.commit()