JOIN은 테이블 간의 관계를 탐색하는게 더 빠르며, 특히 인덱스를 적절히 활용하면 join 연산은 매우 빠른 성능을 보인다. Sub-query는 더 복잡한 쿼리를 가능하게 하지만, 중간 결과의 전달로 인한 오버헤드가 있을 수 있어 경우에 따라 성능이 느려질 수 있다.
오버헤드는 기본 작업 외에 필요한 추가적인 처리 또는 리소스를 나타낸다. 이로 인해 성능이 감소할 수 있다.
<script>
$(document).ready(function () {
show_comment();
});
function save_comment() {
let name = $('#name').val()
let comment = $('#comment').val()
$.ajax({
type: "POST",
url: "http://localhost:5000/comments",
data: {'name': name, 'comment': comment},
success: function (response) {
alert(response["msg"])
window.location.reload()
}
});
}
function show_comment() {
$('#comment-list').empty()
$.ajax({
type: "GET",
url: "http://localhost:5000/comments",
data: {},
success: function (response) {
let rows = response;
for (let i = 0; i < rows.length; i++) {
let name = rows[i].name;
let comment = rows[i].comment;
let temp_html = `<div class="card">
<div class="card-body">
<blockquote class="blockquote mb-0">
<p>${comment}</p>
<footer class="blockquote-footer">${name}</footer>
</blockquote>
</div>
</div>`
$('#comment-list').append(temp_html)
}
}
});
}
</script>
from flask import Flask, request, jsonify, render_template_string, render_template
import pymysql
import os
app = Flask(__name__)
def get_db_connection():
pw = os.getenv('DB_PASSWORD')
conn = pymysql.connect(host='localhost', user='root', password=pw, db='comments', charset='utf8')
return conn
@app.route('/comments', methods=['GET'])
def get_comments():
conn = get_db_connection()
cursor = conn.cursor(pymysql.cursors.DictCursor)
cursor.execute('SELECT name, comment FROM comment')
comments = cursor.fetchall()
conn.close()
return jsonify(comments)
@app.route('/comments', methods=['POST'])
def save_comment():
name = request.form['name']
comment = request.form['comment']
conn = get_db_connection()
cursor = conn.cursor()
cursor.execute('INSERT INTO comment (name, comment) VALUES (%s, %s)', (name, comment))
conn.commit()
conn.close()
return jsonify({'msg': 'Comment added successfully!'})
@app.route('/')
def index():
google_maps_key = os.getenv('GOOGLE_MAPS_KEY') # 환경 변수에서 키 값 가져오기
return render_template('index.html', google_maps_key=google_maps_key)
if __name__ == '__main__':
app.run(debug=True)
html 파일을 크롬창에서 열면 css가 정상적으로 적용되어 보이지만
http://localhost:5000/ 으로 접속하면 css가 깨진다.
Flask에서 정적 파일들은 일반적으로 static 폴더 안에 위치해야 하며, 이 폴더는 Flask 어플리케이션의 루트 디렉터리에 있어야 한다. 현재 상태에서는 templates 폴더 내에 CSS, 이미지 등의 폴더들이 있으므로 이를 static 폴더로 옮겨야 한다.
경로를 아래와 같이 수정해 해결했다.
cf. 상대경로로 설정해둔 파일을 이동시키면 IDE가 자동으로 보정해주는데... 이상하게 몇몇개가 보정이 이상하게 되어 하나하나 찾아서 다시 경로 설정 맞춰줬다 ㅠ
본 후기는 정보통신산업진흥원(NIPA)에서 주관하는 <AI 서비스 완성! AI+웹개발 취업캠프 - 프론트엔드&백엔드> 과정 학습/프로젝트/과제 기록으로 작성 되었습니다.
#정보통신산업진흥원 #NIPA #AI교육 #프로젝트 #유데미 #IT개발캠프 #개발자부트캠프 #프론트엔드 #백엔드 #AI웹개발취업캠프 #취업캠프 #개발취업캠프