@app.route("/address/<name>/")
def address(name):
description = f"{name}의 집입니다."
context = {
"name": name,
"description": description
}
return render_template("index.html", data=context)
브라우저 주소창에 .../address/aaa
와 같이 입력하면 <name> = aaa
가 되고 이를 매개변수로 넘겨주면 코드에서 해당 데이터를 사용할 수 있다.
RDBMS(SQL)
엑셀과 같이 행/열이 존재하는 표처럼 데이터를 저장하는 방식의 DB
데이터의 일관성이나 분석에 용이 (SQLite, MsSQL, MySQL)
No-SQL
딕셔너리 형태로 데이터를 저장하는 DB
데이터 각각의 타입을 맞출 필요없어 자유로운 형태로 사용가능 (MongoDB)
Flask-SQLAlchemy
패키지 설치
기본 코드
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)
어플리케이션과 DB 연결 시 SQL이 아닌 개발언어로 DB에 접근할 수 있게 해주는 기능
ORM을 사용한 테이블 생성 코드
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
을 터미널에 입력하여 CLI shell로 들어가기
from app import db
# 테이블 만들기
db.create_all()
# 테이블 삭제하기
db.drop_all()
# 데이터를 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()