본문 바로가기

Python

[DJANGO] MARIA DB 연결(4) - INSERT(ADD)

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 insert(self,e_id,e_name,gen,addr):
        sql = f"""
        insert into emp
            (e_id, e_name, gen, addr)
        values
            ('{e_id}','{e_name}','{gen}','{addr}')
        """
        cnt = self.curs.execute(sql)
        self.conn.commit()
        return cnt
    
    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 delete(self,e_id):
        sql = f"""
        delete from emp
        where
            e_id = '{e_id}'
        """
        cnt = self.curs.execute(sql)
        self.conn.commit()
        return cnt
    
    def __del__(self):
        self.curs.close()
        self.conn.close()
        
        
    def __str__(self):
        return "소리능력 " + str(self.flag_sound)
    
if __name__ == '__main__':
    de = DaoEmp()
    
    cnt2 = de.delete('3')
    mylist = de.selectList()
    # emp = de.selectOne('1')
    # cnt = de.insert('3', '3', '3', '3')
    print(cnt2)
    print(mylist)
    # print(emp)
    #print(cnt)

 

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),
    path('emp_del',views.emp_del),
    path('emp_add',views.emp_add),
    path('emp_add_act',views.emp_add_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})
        
        
def emp_del(request):
    de = DaoEmp()
    e_id = request.GET.get('e_id')
    cnt = de.delete(e_id)
    
    return render(request, "emp_del_act.html", {'cnt' : cnt})


def emp_add(request):
    return render(request, "emp_add.html")

def emp_add_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.insert(e_id, e_name, gen, addr);
    return render(request, "emp_add_act.html",{'cnt' : cnt})

 

emp_add.html

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

 

emp_add_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_list

실행화면2 - emp_add

실행화면3 - emp_add_act

 

실행화면4 - emp_list