from flask import Flask, render_template, request, redirect, url_for
import mysql.connector
app = Flask(__name__, static_folder='static')
# MySQL 데이터베이스 연결 설정
db = mysql.connector.connect(
host="localhost",
user="root",
password="0000",
database="gamemanager"
)
@app.route('/')
def index():
return render_template('Overview.html')
@app.route('/register-character', methods=['POST'])
def register_character():
player_email = request.form['player_email']
character_name = request.form['character-name']
character_class = request.form['character-class']
character_gender = request.form['character-gender']
cursor = db.cursor()
sql = "INSERT INTO characters (player_email,character_name, character_class, character_gender) VALUES (%s,%s, %s, %s)"
values = (player_email, character_name, character_class, character_gender)
try:
cursor.execute(sql, values)
db.commit()
return "New character registered successfully."
except Exception as e:
db.rollback()
return f"Error: {str(e)}"
finally:
cursor.close()
@app.route('/find-character', methods=['GET', 'POST'])
def find_character():
characters = []
message = ''
if request.method == 'POST':
character_name = request.form['name']
cursor = db.cursor()
query = "SELECT * FROM characters WHERE character_name = %s"
cursor.execute(query, [character_name])
characters = cursor.fetchall()
cursor.close()
if not characters: # 결과가 없다면
message = 'There is no such character'
return render_template('Characters.html', characters=characters, message=message)
@app.route('/item-list')
def item_list():
cursor = db.cursor()
query = "SELECT * FROM item"
cursor.execute(query)
items = cursor.fetchall()
cursor.close()
return render_template('Items.html', items=items)
@app.route('/show-quests')
def show_quests():
cursor = db.cursor()
query = "SELECT * FROM quests"
cursor.execute(query)
quests = cursor.fetchall()
cursor.close()
return render_template('Quests.html', quests=quests)
@app.route('/register-quest', methods=['POST'])
def register_quest():
quest_name = request.form['quest-name']
quest_type = request.form['quest-type']
quest_reward = request.form['quest-reward']
cursor = db.cursor()
sql = "INSERT INTO quests (quest_name, quest_type, quest_reward) VALUES (%s, %s, %s)"
values = (quest_name, quest_type, quest_reward)
try:
cursor.execute(sql, values)
db.commit()
return "New quest registered successfully."
except Exception as e:
db.rollback()
return f"Error: {str(e)}"
finally:
cursor.close()
@app.route('/player-list')
def player_list():
cursor = db.cursor()
query = "SELECT * FROM Players"
cursor.execute(query)
players = cursor.fetchall()
cursor.close()
return render_template('player.html', players=players)
@app.route('/skills-list')
def skills_list():
cursor = db.cursor()
query = "SELECT * FROM skills"
cursor.execute(query)
skills = cursor.fetchall()
cursor.close()
return render_template('Skills.html', skills=skills)
@app.route('/zones-list')
def zones_list():
cursor = db.cursor()
query = "SELECT * FROM zones"
cursor.execute(query)
zones = cursor.fetchall()
cursor.close()
return render_template('Zones.html', zones=zones)
@app.route('/register-item', methods=['POST'])
def register_item():
item_name = request.form['item_name']
item_type = request.form['item_type']
item_rarity = request.form['item_rarity']
cursor = db.cursor()
sql = "INSERT INTO item (item_name, item_type, item_rarity) VALUES (%s, %s, %s)"
values = (item_name, item_type, item_rarity)
try:
cursor.execute(sql, values)
db.commit()
return "New item registered successfully."
except Exception as e:
db.rollback()
return f"Error: {str(e)}"
finally:
cursor.close()
@app.route('/form/register', methods=['POST'])
def register():
username = request.form['username']
email = request.form['email']
password = request.form['passwords']
country = request.form['Country']
cur = db.cursor()
cur.execute("INSERT INTO Players (username, email, passwords, country) VALUES (%s, %s, %s, %s)", (username, email, password, country))
db.commit()
cur.close()
return redirect(url_for('registration_successful'))
@app.route('/register-skill', methods=['GET', 'POST'])
def register_skill():
if request.method == 'POST':
skill_name = request.form['skill-name']
skill_type = request.form['skill-type']
skill_damage = request.form['skill-damage']
cursor = db.cursor()
query = "INSERT INTO skills (skill_name, skill_type, skill_damage) VALUES (%s, %s, %s)"
values = (skill_name, skill_type, skill_damage)
cursor.execute(query, values)
db.commit()
cursor.close()
return "Skill registered successfully!"
return render_template('register_skill.html')
@app.route('/register-zone', methods=['GET', 'POST'])
def register_zone():
if request.method == 'POST':
zone_name = request.form['zone-name']
zone_level = request.form['zone-level']
zone_type = request.form['zone-type']
cursor = db.cursor()
query = "INSERT INTO zones (zone_name, zone_level, zone_type) VALUES (%s, %s, %s)"
values = (zone_name, zone_level, zone_type)
cursor.execute(query, values)
db.commit()
cursor.close()
return "Zone registered successfully!"
return render_template('register_zone.html')
@app.route('/registration_successful')
def registration_successful():
return "Registration success!"
@app.route('/success')
def success():
return 'Successfully registered!'
@app.route('/overview')
def overview():
return render_template('Overview.html')
@app.route('/players')
def players():
return render_template('player.html')
@app.route('/characters')
def characters():
return render_template('Characters.html')
@app.route('/items')
def items():
return render_template('Items.html')
@app.route('/quests')
def quests():
return render_template('Quests.html')
@app.route('/zones')
def zones():
return render_template('Zones.html')
@app.route('/skills')
def skills():
return render_template('Skills.html')
@app.route('/diagram')
def diagram():
return render_template('erd.html')
@app.route('/form/find', methods=['GET'])
def find_player():
email = request.args.get('player-email')
# Players 테이블에서 해당 이메일의 플레이어 정보 가져오기
player = get_player_by_email(email)
# Characters 테이블에서 해당 이메일을 외래 키로 가지는 캐릭터 정보 가져오기
characters = get_characters_by_email(email)
if player:
# 결과를 화면에 작성하여 출력
output = f"Player: {player['username']}, Email: {player['email']}\n"
output += "Characters:\n"
for character in characters:
output += f"- {character['character_name']}\n"
return output
else:
return f"Player with email '{email}' not found."
def get_player_by_email(email):
cursor = db.cursor(dictionary=True)
query = "SELECT * FROM Players WHERE email = %s"
cursor.execute(query, (email,))
player = cursor.fetchone()
cursor.close()
return player
def get_characters_by_email(email):
cursor = db.cursor(dictionary=True)
query = "SELECT character_name FROM Characters WHERE player_email = %s"
cursor.execute(query, (email,))
characters = cursor.fetchall()
cursor.close()
return characters
@app.route('/form/delete', methods=['POST'])
def delete_player():
email = request.form['player-email']
# Characters 테이블에서 해당 이메일을 외래 키로 가지는 캐릭터 정보 삭제
delete_characters_by_email(email)
# Players 테이블에서 해당 이메일의 플레이어 정보 삭제
delete_player_by_email(email)
return "Player and characters deleted successfully."
def delete_characters_by_email(email):
cursor = db.cursor()
query = "DELETE FROM Characters WHERE player_email = %s"
cursor.execute(query, (email,))
db.commit()
cursor.close()
def delete_player_by_email(email):
cursor = db.cursor()
query = "DELETE FROM Players WHERE email = %s"
cursor.execute(query, (email,))
db.commit()
cursor.close()
if __name__ == '__main__':
app.run()
Python
복사