HTML 홈페이지 만들기 4 MySQL

최형우·2024년 3월 2일

HTML

목록 보기
4/5

준비물 1 pip install flask-mysql
준비물 2 pip install mysql-connector-python
준비물 3 mariadb

1. 데이터베이스를 만든다.

CREATE DATABASE mydatabase;

2. 유저를 만들고 권한을 부여한다.

CREATE USER 'user'@'localhost' IDENTIFIED BY 'password';

GRANT ALL PRIVILEGES ON mydatabase.* TO 'user'@'localhost';

FLUSH PRIVILEGES;

3. 테이블 생성

USE mydatabase;

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

4. app.py에 데이터베이스를 연결한다.

데이터베이스 연결 설정 값을 확인해야함

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)

5. 정상 작동확인을 위한 회원가입, 데이터 확인

profile
공부내용정리

0개의 댓글