파이썬을 이용해서 EMP, DEPT 정보를 입력, 수정, 삭제, 검색하는 프로그램을 만드세요.
- 회원 검색조건은 2개 이상으로 하세요. 예(부서 및 입사일)
- 회원 검색시 부서명 및 부서 위치가 표시되게 하세요.
- tkinter를 사용 GUI를 구현하면 좋습니다.
import cx_Oracle
# Oracle 계정 정보 설정
username = "system"
password = "sejong"
dsn = "localhost:1521/xe"
# Oracle 데이터베이스에 연결
connection = cx_Oracle.connect(username, password, dsn)
# 커서 생성
cursor = connection.cursor()
# 예제: 테이블에서 모든 데이터 검색
def search_table():
table_name = str(input("테이블 명을 입력하세요: "))
cursor.execute(f"SELECT * FROM {table_name} WHERE ")
result_set = cursor.fetchall()
# 결과 출력
for row in result_set:
print(row)
# 연결 및 커서 닫기
cursor.close()
def search_employee_emp():
department_number = int(input("부서 번호를 입력하세요: "))
FDOW = input("입사일을 입력하세요 (YYYY-MM-DD): ")
cursor.execute(f"SELECT * FROM emp WHERE (DEPTNO = :deptno) AND (HIREDATE = TO_DATE(:hiredate, 'YYYY-MM-DD'))",
deptno=department_number, hiredate=FDOW)
result_set = cursor.fetchall()
for row in result_set:
print(row)
def update_sal_emp():
cursor = connection.cursor()
# 예제: emp 테이블에서 데이터 수정
emp_id_to_update = int(input("수정할 레코드의 EMPNO를 입력하세요: "))
new_salary = float(input("새로운 SAL 값을 입력하세요: "))
cursor.execute("UPDATE emp SET SAL = :new_salary WHERE EMPNO = :emp_id",
new_salary=new_salary, emp_id=emp_id_to_update)
# 변경 사항을 반영하기 위해 커밋
connection.commit()
# 연결 및 커서 닫기
cursor.close()
connection.close()
def delete_row():
cursor = connection.cursor()
emp_num = int(input("EMP number를 입력해주세요: "))
cursor.execute(f'DELETE FROM EMP WHERE EMPNO = {emp_num}')
connection.commit()
cursor.close()
connection.close()
def add_info():
cursor = connection.cursor()
# 사용자로부터 입력 받기
empno = int(input("EMPNO를 입력하세요: "))
ename = input("ENAME을 입력하세요: ")
job = input("JOB을 입력하세요: ")
mgr = int(input("MGR을 입력하세요: "))
hiredate = input("HIREDATE을 입력하세요 (YYYY-MM-DD): ")
sal = float(input("SAL을 입력하세요: "))
comm = float(input("COMM을 입력하세요: "))
deptno = int(input("DEPTNO를 입력하세요: "))
# emp 테이블에 데이터 추가
cursor.execute("""
INSERT INTO emp (EMPNO, ENAME, JOB, MGR, HIREDATE, SAL, COMM, DEPTNO)
VALUES (:empno, :ename, :job, :mgr, TO_DATE(:hiredate, 'YYYY-MM-DD'), :sal, :comm, :deptno)
""", empno=empno, ename=ename, job=job, mgr=mgr, hiredate=hiredate, sal=sal, comm=comm, deptno=deptno)
# 변경 사항을 반영하기 위해 커밋
connection.commit()
# 연결 및 커서 닫기
cursor.close()
connection.close()
# 예시
search_employee_emp()
'AIoT' 카테고리의 다른 글
AIoT 정규 28일차 (0) | 2024.02.06 |
---|---|
AIoT 정규 27일차 (1) | 2024.02.06 |
AIoT 정규 25일차 (0) | 2024.02.01 |
AIoT 정규 24일차 (0) | 2024.01.31 |
AIoT 정규 23일차 (0) | 2024.01.30 |