Flask 폴더 구조
Project 폴더 구조 - - - Project |— venv |— app.py (서버) |— templates |— motto.html (클라이언트 파일) |— music.html (클라이언트 파일) |
1. URL 주소에서 데이터 가져오기
ex) 인스타그램 주소에 따라서 데이터가 변경됨.
https://www.instagram.com/iamrtanny/ -> 르타니 계정
https://www.instagram.com/jung_mmmmin -> 내 계정
* 주소에 따라 메인 화면 인사말 바꾸기
@app.route("/iloveyou/<name>/") -> 이곳의 name 과
def iloveyou(name): -> name을 받아서 쓰는 것
motto = f"{name}야 난 너뿐이야..."
context = {
"name": name,
"motto": motto
}
return render_template("motto.html", data=context)
DB 시작
1. 들어가기전
vscode에서 SQLite3 Editor VScode Extension 설치
* SQLite 설정하기
- database.db 파일 생성
Project 폴더 구조 - - - Project |— venv |— app.py (서버) |— templates |— motto.html (클라이언트 파일) |— music.html (클라이언트 파일) |— database.db |
- database.db 파일 위에서 오른쪽 클릭
- 메뉴 open with 클릭
- 기본 설정 변경 : Configure default editor fot *.db... 메뉴 클릭
- SQLite3 Editor를 선택
- database.db 다시 열어 Query Editor 있는지 확인
2. SQLAlchemy로 Database 연결하기 & 테이블 만들기
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)
* app.py에서 데이터베이스 모델 정의
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()
추천자(username), 가수(artist), 노래 제목(title), 포스터 주소(image_url) 칼럼 생성
* Database 활성화
>>> from app import db, Song (엔터) >>> db.create_all() |
* Database에 데이터 넣기
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] # 가수:노래제목 추천 by 추천자 >>> song_list[0].title # 딕셔너리를 사용하는 것처럼 속성 값을 통해 원하는 데이터를 가져올 수 있다. |
* 특정 조건으로 데이터 가져오기
Song.query.filter_by(id=3).first() # 가수2:노래제목2 추천 by 스파르타 Song.query.filter_by(title='노래제목').first() # 가수:노래제목 추천 by 추천자 |
* 데이터 수정하기
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() |
'Flask > 웹개발' 카테고리의 다른 글
[GPT] 웹개발 3주차 | Python (0) | 2023.10.15 |
---|---|
[GPT] 웹개발 2주차 | Javascript&JQuery (1) | 2023.10.15 |
[GPT] 웹개발 1주차 | HTML&CSS (0) | 2023.10.15 |