TIL | flask 데이터베이스 연동

이도운·2022년 2월 6일
0

TIL

목록 보기
68/73
post-thumbnail

DB 생성

from flask_sqlalchemy import SQLAlchemy
from datetime import datetime
import pytz

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///blog.db'
db = SQLAlchemy(app)

class Post(db.Model):
   id = db.Column(db.Integer, primary_key=True)
   title = db.Column(db.String(80), nullable=False)
   body = db.Column(db.String(300), nullable=False)
   created_at = db.Column(
      db.DateTime, 
      nullable=False, 
      default=datetime.now(pytz.timezone('Asia/Seoul'))
      )

생성

@app.route('/create', methods=['GET', 'POST'])
def create():
   if request.method == 'POST':
      title = request.form.get('title')
      body  = request.form.get('body')
      
      post = Post(title=title, body=body)
      
      db.session.add(post)
      db.session.commit()
      return redirect('/')
   else:
      return render_template('create.html')

표현

@app.route('/', mehtods=['GET', 'POST'])
def index():
   if request.method == 'GET':
      posts = Post.query.all()
      return render_template('index.html', posts=posts)

편집

@app.route('/<int:id>/update', methods=['GET', 'POST'])
def update(id):
   post = Post.query.get(id)
   
   if request.method == 'GET':
      return render_template('update.html', post=post)
   else:
      post.title = request.form.get('title')
      post.body  = request.form.get('body')
      
      db.session.commit()
      return redirect('/')

제거

@app.route('/<int:id>/delete', methods=['GET'])
def delete(id):
   post = Post.query.get(id)
   
   db.session.delete(post)
   db.session.commit()
   return redirect('/')

참고

【完全版】この動画1本でFlaskの基礎を習得!忙しい人のための速習コース(Flask超入門)

profile
⌨️ 백엔드개발자 (컴퓨터공학과 졸업)

0개의 댓글