IT

파이썬(Python)과 Oracle 9i를 이용한 로그인 화면 구현 설명서 (예제 포함)

carnival6103 2025. 2. 2. 10:28
반응형

파이썬과 Oracle 9i 데이터베이스를 연동하여 간단한 로그인 화면을 구현하는 방법을 안내합니다.

Oracle 9i는 비교적 오래된 버전이지만, 학습 목적으로 사용하거나 특정 환경에서 필요할 수 있습니다.

주의: Oracle 9i는 현재 지원이 종료된 버전이므로 보안 취약점이 존재할 수 있습니다. 실제 서비스 환경에서는 최신 버전의 Oracle 데이터베이스를 사용하는 것을 권장합니다.

1. 필요한 준비물

  • 파이썬(Python): 최신 버전의 파이썬이 설치되어 있어야 합니다. https://www.python.org/
  • Oracle 9i 클라이언트: Oracle 9i 데이터베이스에 접속하기 위한 OCI (Oracle Call Interface) 라이브러리가 필요합니다.
  • cx_Oracle: 파이썬에서 Oracle 데이터베이스를 사용하기 위한 라이브러리입니다. 다음 명령어로 설치할 수 있습니다.
Bash
 
pip install cx_Oracle

2. Oracle 9i 데이터베이스 설정

  1. Oracle 9i 서버에 접속하여 새로운 사용자 계정을 생성합니다. (예: login_user)
  2. login_user 계정에 로그인 권한을 부여합니다.
  3. login_user 계정으로 접속하여 사용자 정보를 저장할 테이블을 생성합니다. (예: users 테이블)
SQL
 
CREATE TABLE users (
    id NUMBER GENERATED ALWAYS AS IDENTITY PRIMARY KEY,
    username VARCHAR2(255) UNIQUE NOT NULL,
    password VARCHAR2(255) NOT NULL
);

3. 파이썬 코드 작성

다음은 파이썬 코드를 사용하여 로그인 화면을 구현하는 예제입니다.

Python
 
import tkinter as tk
import cx_Oracle

def login():
    username = username_entry.get()
    password = password_entry.get()

    try:
        # Oracle 연결
        dsn_tns = cx_Oracle.makedsn("your_oracle_host", "your_oracle_port", "your_oracle_sid")  # SID, Host, Port 정보 입력
        conn = cx_Oracle.connect(user="login_user", password="your_oracle_password", dsn=dsn_tns)  # 사용자 계정 정보 입력
        cursor = conn.cursor()

        # 사용자 정보 조회
        sql = "SELECT * FROM users WHERE username = :username AND password = :password"
        cursor.execute(sql, username=username, password=password)
        result = cursor.fetchone()

        if result:
            login_success()
        else:
            login_failed()

        conn.close()

    except cx_Oracle.Error as err:
        error, = err.args
        print(f"Oracle 연결 오류: {error.message}")

def login_success():
    result_label.config(text="로그인 성공!")

def login_failed():
    result_label.config(text="로그인 실패!")

# Tkinter 창 생성
window = tk.Tk()
window.title("로그인 화면")

# 레이블 및 입력 필드 생성
username_label = tk.Label(window, text="아이디:")
username_label.grid(row=0, column=0)
username_entry = tk.Entry(window)
username_entry.grid(row=0, column=1)

password_label = tk.Label(window, text="비밀번호:")
password_label.grid(row=1, column=0)
password_entry = tk.Entry(window, show="*")
password_entry.grid(row=1, column=1)

# 로그인 버튼 생성
login_button = tk.Button(window, text="로그인", command=login)
login_button.grid(row=2, column=0, columnspan=2)

# 결과 메시지 레이블 생성
result_label = tk.Label(window, text="")
result_label.grid(row=3, column=0, columnspan=2)

window.mainloop()

4. 코드 실행 및 테스트

  1. 위 파이썬 코드를 실행합니다.
  2. 로그인 화면이 나타나면 Oracle 데이터베이스에 등록된 사용자 이름과 비밀번호를 입력합니다.
  3. "로그인" 버튼을 클릭하여 로그인을 시도합니다.
  4. 로그인 성공 또는 실패 메시지가 화면에 표시됩니다.

5. 추가 기능

  • 비밀번호 암호화: 비밀번호를 데이터베이스에 저장할 때 암호화하여 보안을 강화할 수 있습니다.
  • 아이디/비밀번호 찾기 기능: 아이디 또는 비밀번호를 잊었을 경우 이를 찾을 수 있는 기능을 추가할 수 있습니다.
  • 회원가입 기능: 새로운 사용자가 회원가입을 할 수 있는 기능을 추가할 수 있습니다.

기본적인 로그인 화면 구현 방법을 설명을 드렸으며, 필요에 따라 다양한 기능을 추가하여 더욱 완성도 높은 로그인 시스템을 구축할 수 있습니다.

반응형