본문 바로가기

Python

[DJANGO] MARIA DB 연결(2) - UPDATE(MODIFY)

dao_emp.py

import pymysql
class DaoEmp:
    def __init__(self):
        self.conn = pymysql.connect(host='127.0.0.1', user='root', password='python',
                           db='python',port=3304, charset='utf8')
        self.curs = self.conn.cursor(pymysql.cursors.DictCursor)
        
    def selectList(self):
        sql = """
        select 
        E_ID, E_NAME, GEN, ADDR 
        from emp
        ORDER BY CAST(E_ID AS INTEGER)
        """
        self.curs.execute(sql)
        list = self.curs.fetchall()
        return list

    def selectOne(self,e_id):
        sql = f"""
        select
            E_ID, E_NAME, GEN, ADDR
        FROM EMP
        WHERE
            E_ID = '{e_id}'
        """
        self.curs.execute(sql)
        emp = self.curs.fetchall()
        return emp[0]

    def update(self,e_id,e_name,gen,addr):
        sql = f"""
        update emp
        set
            e_name = '{e_name}',
            gen = '{gen}',
            addr = '{addr}'
        where
            e_id = '{e_id}'
        """
        cnt = self.curs.execute(sql)
        self.conn.commit()
        return cnt

    def __del__(self):
        self.curs.close()
        self.conn.close()

 

urls.py

from django.contrib import admin
from django.urls import path
from HELLO_EMP import views
urlpatterns = [
    path('admin/', admin.site.urls),
    path('',views.emp_list),
    path('emp_list',views.emp_list),
    path('emp_detail',views.emp_detail),
    path('emp_mod',views.emp_mod),
    path('emp_mod_act',views.emp_mod_act),
]

views.py

from django.shortcuts import render
import pymysql
from HELLO_EMP.dao_emp import DaoEmp
from django.views.decorators.csrf import csrf_exempt

def emp_list(request):
    de = DaoEmp()
    emps = de.selectList()
    return render(request, 'emp_list.html', {'emps' : emps })

def emp_detail(request):
    de = DaoEmp()
    e_id = request.GET.get('e_id')
    emp = de.selectOne(e_id)
    return render(request, 'emp_detail.html', {'emp' : emp})

def emp_mod(request):
    de = DaoEmp()
    e_id = request.GET.get('e_id')
    emp = de.selectOne(e_id)
    return render(request, 'emp_mod.html', {'emp' : emp})

@csrf_exempt
def emp_mod_act(request):
    de = DaoEmp()
    e_id = request.POST.get('e_id')
    e_name = request.POST.get('e_name')
    gen = request.POST.get('gen')
    addr = request.POST.get('addr')
    
    cnt = de.update(e_id, e_name, gen, addr)
    
    return render(request, "emp_mod_act.html",{'cnt' : cnt})

emp_mod.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
function fn_mod_act(){
	document.frm.submit();
}
</script>
</head>
<body>
EMP_MOD
<form action="emp_mod_act" name="frm" method="post">
{% csrf_token %}
	<table border="1">
		<tr>
			<th>사번</th>
			<td><input type="text" name="e_id" value="{{emp.E_ID}}"/></td>
		</tr>
		<tr>
			<th>이름</th>
			<td><input type="text" name="e_name" value="{{emp.E_NAME}}"/></td>
		</tr>
		<tr>
			<th>성별</th>
			<td><input type="text" name="gen" value="{{emp.GEN}}"/></td>
		</tr>
		<tr>
			<th>주소</th>
			<td><input type="text" name="addr" value="{{emp.ADDR}}"/></td>
		</tr>
		<tr>
			<td colspan="2">
				<input type="button" value="저장" onclick = "fn_mod_act()"/>
				
			</td>
		</tr>
	</table>
</form>
</body>
</html>

emp_mod_act.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script>
	let cnt = "{{cnt}}";
	if(cnt!="0"){
		alert("업데이트 성공");
		location.href = "emp_list"
	} else{
		alert('업데이트 실패');
		history.back();
	}
	
</script>
</head>
<body>

</body>
</html>

실행화면 1- EMP_MOD

 

실행화면 2 - EMP_MOD_ACT