mssql에서 데이터를 조회하는 방법

데이터베이스에서 데이터를 가져오고, tkinterTreeview 위젯을 사용하여 데이터를 테이블 형식으로 표시하는 프로그램을 작성해보도록 하겠습니다.
샘플 프로그램을 만드는 거라서 최대한 간단하게만들었습니다.

먼저 화면은 다음과 같습니다.
 

주요 기능:

  1. pymssql을 사용하여 MSSQL에 연결합니다.
  2. 쿼리를 사용하여 FirstName에 대한 필터링을 수행합니다.
  3. tkinterEntry 위젯으로 필터링할 이름을 입력받습니다.
  4. Treeview를 사용하여 데이터를 표시합니다.

먼저, 필요한 라이브러리를 설치해야 합니다.

필요한 라이브러리 설치

pip install pyodbc

소스 코드

아래는 tkinterpymssql을 사용하여 MSSQL에서 데이터를 가져와 표시하는 프로그램의 예제 코드입니다.

import tkinter as tk from tkinter import ttk import pyodbc # 데이터베이스에 연결하는 함수 def fetch_data(): # MSSQL 서버에 연결 connInfo = "DRIVER={ODBC Driver 17 for SQL Server};SERVER=.\TIGERSARANG;DATABASE=pyTestDb;UID=xxx;PWD=xxxx;TrustServerCertificate=yes" conn = pyodbc.connect(connInfo) cursor = conn.cursor() # 입력된 FirstName 값으로 필터링 firstname_filter = firstname_entry.get() query = f""" SELECT TOP (1000) [id], [FirstName], [LastName], [Gender], [CellNum], [Age] FROM [pytestDb].[dbo].[CustomerInfo] WHERE [FirstName] LIKE %s """ cursor.execute(query, (f'%{firstname_filter}%',)) # 기존 데이터를 클리어 for row in tree.get_children(): tree.delete(row) # 가져온 데이터 Treeview에 추가 for row in cursor.fetchall(): tree.insert('', tk.END, values=row) conn.close() # 메인 윈도우 생성 root = tk.Tk() root.title("MSSQL Data Viewer") root.geometry("800x400") # FirstName 필터 입력 tk.Label(root, text="FirstName Filter:").pack(pady=5) firstname_entry = tk.Entry(root) firstname_entry.pack(pady=5) # 데이터 조회 버튼 fetch_button = tk.Button(root, text="Fetch Data", command=fetch_data) fetch_button.pack(pady=5) # Treeview 위젯 생성 (데이터 표시용) columns = ('id', 'FirstName', 'LastName', 'Gender', 'CellNum', 'Age') tree = ttk.Treeview(root, columns=columns, show='headings') # 컬럼 헤더 설정 for col in columns: tree.heading(col, text=col) tree.pack(expand=True, fill='both') # 프로그램 실행 root.mainloop()

코드 설명

  1. 데이터베이스 연결:

    • pymssql.connect()를 사용하여 MSSQL 서버에 연결합니다. 주어진 연결 문자열을 바탕으로 server, database, integrated_security, encrypt, trust_server_certificate를 설정했습니다.
  2. 데이터 가져오기 (fetch_data 함수):

    • SELECT 쿼리를 사용하여 FirstName 컬럼에 대해 필터링을 수행합니다. 입력된 FirstName 값으로 필터링하여 해당하는 데이터를 가져옵니다.
    • fetchall()로 쿼리 결과를 가져온 후, Treeview에 데이터를 삽입합니다.
  3. GUI 구성:

    • tkinter를 사용하여 간단한 GUI를 생성합니다.
    • Entry 위젯을 사용하여 FirstName 필터를 입력받습니다.
    • Button을 눌러 데이터 조회를 실행하며, Treeview 위젯에 데이터를 표시합니다.
  4. Treeview 위젯:

    • Treeview 위젯을 사용하여 데이터베이스에서 가져온 데이터를 표 형태로 표시합니다.
    • 각 컬럼의 이름을 설정하고, 쿼리 결과로 가져온 데이터를 삽입합니다.

주의 사항

  • pymssql을 사용하려면 Python과 MSSQL 서버가 동일한 네트워크 내에 있어야 하며, MSSQL 서버가 연결을 허용하도록 구성되어 있어야 합니다.
  • integrated_security=True를 설정하여 Windows 인증을 사용하도록 하였습니다. 다른 방식의 인증을 사용하려면 연결 문자열의 옵션을 변경하면 됩니다.
  • 보안 문제로 인해 실제 사용 시에는 입력 값을 검증하고 SQL 인젝션 공격에 대비하는 것이 좋습니다.

요약

  • 이 코드는 tkinterpymssql을 사용하여 MSSQL에서 데이터를 가져와 Treeview에 표시하는 예제입니다.
  • FirstName 필드를 사용하여 데이터를 필터링하며, 필터링 값을 Entry 위젯에서 입력받습니다.
  • 버튼을 눌러 필터링된 데이터를 가져와 Treeview 위젯에 표시합니다.

댓글 쓰기

댓글 목록