AIoT

AIoT 정규 26일차

맥기짱짱 2024. 2. 2. 15:57

파이썬을 이용해서 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