TODO
hr database의 emp 테이블의 데이터를 다루는 함수들을 구현
1. 직원 정보들(emp의 컬럼들)을 매개변수로 받아 insert 하는 함수
2. 수정할 직원 정보들을 매개변수로 받아 받은 emp_id의 직원의 나머지 컬럼값들을 수정하는 함수
3. emp_id를 매개변수로 받아 그 직원을 삭제하는 함수
4. job을 매개변수로 받아 그 업무를 하는 직원들을 삭제하는 함수
5. 전체 직원정보를 모두 조회해서 반환하는 함수
6. emp_id를 매개변수로 받아 그 직원 정보를 조회해서 반환하는 함수
7. dept_name을 매개변수로 받아서 그 부서에 소속된 직원들의 정보를 조회해서 반환하는 함수
8. salary 범위를 매개변수로 받아 그 범위의 salary를 받는 직원들의 정보를 조회해서 반환하는 함수
9. emp_id를 매개변수로 받아서 그 직원의 커미션이 얼마인지를(salary * comm_pct) 조회해 반환하는 함수
10. dept_name을 매개변수로 받아서 부서별 급여 통계정보(합계, 최대, 최소, 평균, 표준편차)를 반환하는 함수
import pymysql
from datetime import date, datetime
# 1. 직원 정보들(emp의 컬럼들)을 매개변수로 받아 insert 하는 함수
def insert_emp(emp_id, emp_name, job, mgr_id, hire_date, salary, comm_pct, dept_name):
sql = "insert into emp (emp_id, emp_name, job, mgr_id, hire_date, salary, comm_pct, dept_name) \
values (%s, %s, %s, %s, %s, %s, %s, %s)"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, (emp_id, emp_name, job, mgr_id, hire_date, salary, comm_pct, dept_name))
conn.commit()
return cnt
# 2. 수정할 직원 정보들을 매개변수로 받아 받은 emp_id의 직원의 나머지 컬럼값들을 수정하는 함수
def update_emp(emp_id, emp_name, job, mgr_id, hire_date, salary, comm_pct, dept_name):
sql = "update emp set emp_name = %s, job = %s, mgr_id = %s, hire_date = %s, salary = %s, comm_pct = %s, dept_name = %s where emp_id = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, (emp_name, job, mgr_id, hire_date, salary, comm_pct, dept_name, emp_id))
conn.commit()
return cnt
# 3. emp_id를 매개변수로 받아 그 직원을 삭제하는 함수
def delete_emp(emp_id):
sql = "delete from emp where emp_id = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, (emp_id))
conn.commit()
return cnt
# 4. job을 매개변수로 받아 그 업무를 하는 직원들을 삭제하는 함수
def delete_emp_job(job):
sql = "delete from emp where job = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, (job))
conn.commit()
return cnt
# 5. 전체 직원정보를 모두 조회해서 반환하는 함수
def select_all_emp():
sql = "select * from emp"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql)
return cursor.fetchall()
# 6. emp_id를 매개변수로 받아 그 직원 정보를 조회해서 반환하는 함수
def select_emp_id(emp_id):
sql = "select * from emp where emp_id = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, emp_id)
return cursor.fetchone()
# 7. dept_name을 매개변수로 받아서 그 부서에 소속된 직원들의 정보를 조회해서 반환하는 함수
def select_emp_dept_name(dept_name):
sql = "select * from emp where dept_name = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cursor.execute(sql, dept_name)
return cursor.fetchall()
# 8. salary 범위를 매개변수로 받아 그 범위의 salary를 받는 직원들의 정보를 조회해서 반환하는 함수
def select_emp_salary(start_salary, end_salary):
sql = "select * from emp where salary between %s and %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, (start_salary, end_salary))
return cursor.fetchall()
# 9. emp_id를 매개변수로 받아서 그 직원의 커미션이 얼마인지를(salary * comm_pct) 조회해 반환하는 함수
def select_comm_pct(emp_id):
sql = "select emp_name, salary * comm_pct from emp where emp_id = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, emp_id)
return cursor.fetchone()
# 10. dept_name을 매개변수로 받아서 부서별 급여 통계정보(합계, 최대, 최소, 평균, 표준편차)를 반환하는 함수
def select_info(dept_name):
sql = "select sum(salary), max(salary), min(salary), avg(salary), stddev(salary) from emp where dept_name = %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'hr') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, dept_name)
return cursor.fetchall()
결과확인
1번
insert_emp(207, 'lee', 'PR_REP', 101, '2002-05-03', 10000, 0.1, 'Accounting') # 1번 확인
# MySQL Workbench에서 결과값 확인
2번
update_emp(207, 'lee', 'PR_REP', 102, '2002-05-03', 8000, 0.1, 'Accounting') # 2번 확인
3번
delete_emp(207) # 3번 확인
4번
insert_emp(207, 'lee', 'abcde', 101, '2002-05-03', 10000, 0.1, 'Accounting') # 값 다시 생성
delete_emp_job('abcde') # 4번 확인
5번
select_all_emp() # 5번 확인
6번
select_emp_id(206) # 6번 확인
7번
select_emp_dept_name('Sales') # 7번 확인
8번
select_emp_salary(5000, 10000) # 8번 확인
9번
select_comm_pct(160) # 9번 확인
10번
select_info('Sales') # 10번 확인'Data_Analysis_Track_33 > Python_문제풀이' 카테고리의 다른 글
| Python_10_문제풀이(matplotlab, seaborn) (0) | 2023.09.30 |
|---|---|
| Python_09_문제풀이(pandas_정렬_집계 TODO문제) (0) | 2023.09.18 |
| Python_07_문제풀이(pymysql TODO 문제) (0) | 2023.09.11 |
| Python_06_문제풀이(파이썬 정규표현식) (0) | 2023.08.29 |
| Python_05_문제풀이(Decorator) (0) | 2023.08.28 |