준비물 1 pip install flask-mysql
준비물 2 pip install mysql-connector-python
준비물 3 mariadb
CREATE DATABASE mydatabase;

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';
GRANT ALL PRIVILEGES ON mydatabase.* TO 'user'@'localhost';
FLUSH PRIVILEGES;

USE mydatabase;
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(20) UNIQUE NOT NULL,
password VARCHAR(20) NOT NULL
);

데이터베이스 연결 설정 값을 확인해야함
from flask import Flask, render_template, request
import mysql.connector
app = Flask(__name__)
# 데이터베이스 연결 설정
db = mysql.connector.connect(
host="localhost", # 호스트
user="user", # 사용자 이름
password="password", # 비밀번호
database="mydatabase" # 데이터베이스 이름
)
# 커서 생성
cursor = db.cursor()
# 루트 URL에 접속했을 때 실행되는 함수입니다.
@app.route("/")
def home():
# render_template 함수는 templates 폴더에 있는 HTML 파일을 렌더링하여 반환합니다.
# 여기서는 main.html 파일을 렌더링하여 사용자에게 보여줍니다.
return render_template("main.html")
# '/register' URL에 GET 메서드로 요청이 들어왔을 때 회원가입 폼을 보여주는 함수입니다.
@app.route('/register', methods=['GET'])
def show_register_form():
# render_template 함수를 사용하여 register.html 파일을 렌더링하여 사용자에게 보여줍니다.
return render_template("register.html")
# '/register' URL에 POST 메서드로 요청이 들어왔을 때 실행되는 함수입니다.
@app.route('/register', methods=['POST'])
def register():
try:
# request.form을 통해 폼 데이터를 가져와서 사용합니다.
# 여기서는 회원가입 폼에서 사용자명, 비밀번호, 확인 비밀번호를 받아옵니다.
username = request.form['username']
password = request.form['password']
confirm_password = request.form['confirm_password']
# 비밀번호 확인
if password != confirm_password:
return '비밀번호가 일치하지 않습니다.'
# 데이터베이스에 사용자 정보 추가
insert_query = "INSERT INTO users (username, password) VALUES (%s, %s)"
cursor.execute(insert_query, (username, password))
db.commit()
# 회원가입 완료 메시지 반환
return '회원가입이 완료되었습니다.'
except mysql.connector.Error as e:
# MySQL 오류 발생 시 오류 메시지 반환
print("MySQL Error:", str(e))
return '회원가입에 실패했습니다.'
except Exception as e:
# 그 외의 예외가 발생할 경우 예외 메시지 반환
print("An error occurred:", str(e))
return '회원가입에 실패했습니다.'
# 이 부분은 해당 파일이 직접 실행될 때만 실행되는 코드입니다.
if __name__ == "__main__":
# 애플리케이션을 디버그 모드로 실행합니다.
app.run(debug=True)
