[python] PyQt에서의 데이터베이스 시각화

데이터베이스 시각화는 데이터를 시각적으로 표현하여 분석 및 이해를 돕는 매우 유용한 도구입니다. PyQt는 파이썬에서 GUI 프로그래밍을 하기 위한 라이브러리로, 데이터베이스 시각화를 위한 다양한 기능을 제공합니다.

1. PyQt를 사용하여 데이터베이스 연결

PyQt에서는 데이터베이스에 연결하기 위해 다양한 방법을 제공합니다. 대표적으로 QtSql 모듈을 사용하여 데이터베이스에 연결할 수 있습니다. 다음은 MySQL 데이터베이스에 연결하는 예제 코드입니다.

import sys
from PyQt5.QtSql import QSqlDatabase, QSqlQuery

# 데이터베이스 연결
db = QSqlDatabase.addDatabase("QMYSQL")
db.setHostName("localhost")
db.setDatabaseName("mydatabase")
db.setUserName("root")
db.setPassword("password")
if not db.open():
    print("데이터베이스 연결 실패:", db.lastError().text())
    sys.exit(1)

# 쿼리 실행
query = QSqlQuery()
query.exec_("SELECT * FROM mytable")
while query.next():
    name = query.value(0)
    age = query.value(1)
    print("이름:", name, "나이:", age)

# 데이터베이스 연결 종료
db.close()

2. 데이터베이스 시각화 예제

PyQt를 이용하여 데이터베이스 시각화를 구현할 수 있습니다. 예를 들어, 데이터베이스에서 가져온 정보를 그래프로 표현하는 예제 코드를 살펴보겠습니다.

import sys
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget
from PyQt5.QtChart import QChart, QChartView, QBarSeries, QBarSet, QBarCategoryAxis

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("데이터베이스 시각화 예제")
        
        # 차트 생성
        chart = QChart()
        series = QBarSeries()
        
        # 데이터베이스 연결
        db = QSqlDatabase.addDatabase("QMYSQL")
        db.setHostName("localhost")
        db.setDatabaseName("mydatabase")
        db.setUserName("root")
        db.setPassword("password")
        if not db.open():
            print("데이터베이스 연결 실패:", db.lastError().text())
            sys.exit(1)
        
        # 쿼리 실행
        query = QSqlQuery()
        query.exec_("SELECT name, age FROM mytable")
        while query.next():
            name = query.value(0)
            age = query.value(1)
            barset = QBarSet(name)
            barset.append(age)
            series.append(barset)
            
        # 차트에 시리즈 추가
        chart.addSeries(series)
        
        # 카테고리 축 생성
        categories = []        
        query.exec_("SELECT name FROM mytable")
        while query.next():
            category = query.value(0)
            categories.append(category)
            
        axisX = QBarCategoryAxis()
        axisX.append(categories)
        chart.addAxis(axisX, Qt.AlignBottom)
        series.attachAxis(axisX)
        
        # 차트 뷰 생성
        chartView = QChartView(chart)
        
        # 메인 윈도우에 레이아웃 추가
        layout = QVBoxLayout()
        layout.addWidget(chartView)
        
        # 메인 윈도우 위젯 생성
        widget = QWidget()
        widget.setLayout(layout)
        
        # 메인 윈도우에 위젯 설정
        self.setCentralWidget(widget)
        
        # 데이터베이스 연결 종료
        db.close()
        
if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

위 예제 코드는 데이터베이스에서 이름과 나이 정보를 가져와서 막대 그래프로 시각화하는 기능을 구현한 것입니다. 창을 실행하면 데이터베이스에 저장된 정보가 막대 그래프로 표시됩니다.

결론

PyQt를 사용하여 데이터베이스 시각화를 구현하는 방법을 살펴보았습니다. 데이터베이스 연결과 쿼리 실행을 통해 원하는 정보를 가져와서 차트를 생성하고 이를 GUI에서 표시할 수 있습니다. 데이터베이스 시각화는 데이터 분석 및 시각화를 위한 필수적인 도구로서, PyQt는 이를 구현하는 데에 매우 유용한 도구입니다.

참고문서: PyQt 공식 문서