flask 데이터베이스 연동
3/31
학습한 내용
파이썬을 이용한 sqlite3 활용
cmd로 DB 생성 및 정리 (파이썬으로 sqlite3 핸들링. DB(생성한 파일)를 읽고 쓰기)
.open db.sqlite3 (db라는 파일이 없다면 생성됨.)
id integer primary key,
title text not null,
body text
);
ls -l (파일들 상세보기)
python3 sqlite3 ★검색창에 검색. (인터페이스 검색)
read.py
import sqlite3 conn = sqlite3.connect('db.sqlite3') curor = conn.cursor() curor.execute('SELECT * FROM topics') topics = curor.fetchall() for topic in topics: print(topic[0], topic[1]) conn.close()
$ python3 read.py
$ sqlite3 db.sqlite3
create.py
import sqlite3 conn = sqlite3.connect('db.sqlite3') curor = conn.cursor() title = input('title? ') body = input('body? ') curor.execute('INSERT INTO topics (title, body) VALUES(?, ?)', (title, body)) conn.commit() conn.close() import read
$ python3 create.py
title? 입력
body? 입력
$ python3 read.py
topics 들을 DB로 바꾸기 (영구보관 가능)
전 > 후
전 > 후
삭제버튼 (전 > 후)
------------------------ 결과들
-
홈화면
-
creat버튼 눌렀을 때
-
sqlite를 눌렀을 때
--- 최종 코드
from flask import Flask, request, redirect
import sqlite3
app = Flask(__name__)
topics = [
{"id":1, "title":"html", "body":"html is ...."},
{"id":2, "title":"css", "body":"css is ...."},
{"id":3, "title":"js", "body":"js is ...."}
]
def template(content, id=None):
contextUI = ''
if id != None:
contextUI = '<input type="submit" value="delete" class="btn btn-dark">'
conn = sqlite3.connect('db.sqlite3')
cs = conn.cursor()
cs.execute('select * from topics')
topics = cs.fetchall()
conn.close()
liTags = ''
for topic in topics:
liTags = liTags + f'<li><a href="/read/{topic[0]}/">{topic[1]}</a></li>'
return f'''
<html>
<head>
<link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous">
<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script>
<style>
h1{{
border-bottom:10px solid green;
}}
h1>a{{
text-decoration:none;
}}
</style>
</head>
<body class="container">
<input type="button" value="night" onclick="
document.querySelector('body').style.backgroundColor = 'black';
document.querySelector('body').style.color = 'white';
">
<h1><a href="/">WEB</a></h1>
<ol>
{liTags}
</ol>
{content}
<form action="/delete/{id}/" method="POST">
<div class="btn-group" role="group" aria-label="Basic example">
<a href="/create/" class="btn btn-dark">create</a>
{contextUI}
</div>
</form>
</body>
</html>
'''
@app.route("/")
def index():
return template('<h2>Welcome</h2>Hello, WEB!')
@app.route("/read/<int:id>/")
def read(id):
conn = sqlite3.connect('db.sqlite3')
cs = conn.cursor()
cs.execute('SELECT * FROM topics WHERE id=?', (id,))
topic = cs.fetchone()
conn.close()
title = topic[1]
body = topic[2]
return template(f'<h2>{title}</h2>{body}', id)
@app.route('/create/')
def create():
content = '''
<form action="/create_process/" method="POST">
<p><input type="text" name="title" placeholder="title"></p>
<p><textarea name="body" placeholder="body"></textarea></p>
<p><input type="submit" value="create"></p>
</form>
'''
return template(content)
@app.route('/create_process/', methods=['POST'])
def create_process():
title = request.form['title']
body = request.form['body']
conn = sqlite3.connect('db.sqlite3')
cs = conn.cursor()
cs.execute('INSERT INTO topics (title, body) VALUES(?,?)',(title,body))
id = cs.lastrowid
conn.commit()
conn.close()
return redirect(f'/read/{id}/')
@app.route('/delete/<int:id>/', methods=['POST'])
def delete(id):
conn = sqlite3.connect('db.sqlite3')
cs = conn.cursor()
cs.execute('DELETE FROM topics WHERE id = ?',(id,))
conn.commit()
conn.close()
return redirect('/')
# # @app.route('/update/')
# # def update():
# # return 'Update'
app.run()
↑ CSS, 자바스크립트 복습 내용도 포함
f-string escape string (중괄호를 나오게 하려면 중괄호 두번씩 {{ }} )
학습한 내용 중 어려웠던 점
전체적으로 어려웠지만 강사님께서 지난번 학습 내용들을 한번씩 다시 설명해주시고, 이전에 배웠던 CSS와 자바스크립트의 내용도 flask에 적용시키며 복습하는 시간을 가질 수 있었다.
해결방법 작성
헷갈리고 어려웠던 파이썬부터 전체적으로 다시 강의를 보며 복습하고 따라해보기.
학습 소감
오늘로서, 이고잉 강사님의 수업이 모두 끝이 났다.
강사님과 수강생들 모두에게 주어진 시간이 부족했던 것은 사실이지만, 완전 초급 입문자가 대략적으로나마 코딩에 대해 알 수 있게 되었던 시간이었던 것 같다.
(으...갑자기 월말평가 무조건 만점만 pass라니...ㄷㄷ 너무 무섭)
Author And Source
이 문제에 관하여(flask 데이터베이스 연동), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nomadgogo/flask-데이터베이스-연동저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)