PyQt
는 파이썬으로 작성된 Qt
라이브러리를 위한 바인딩이다. Qt
는 플랫폼 간 어플리케이션 개발을 위한 대표적인 프레임워크로, 사용자 인터페이스(UI) 개발을 위한 다양한 도구와 기능을 제공한다. 이번 글에서는 PyQt
와 SQL
을 통합하여 데이터베이스와의 상호작용을 어떻게 할 수 있는지 알아보겠다.
PyQt
를 이용한 GUI 애플리케이션 개발
먼저, PyQt
를 이용하여 간단한 GUI 애플리케이션을 개발하는 방법을 살펴보자. 아래 예제는 버튼을 클릭하면 레이블에 메시지를 표시하는 간단한 애플리케이션이다.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel("Hello, PyQt!", self)
self.button = QPushButton("Click Me", self)
self.button.clicked.connect(self.display_message)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button)
self.setLayout(layout)
self.setWindowTitle("My PyQt App")
def display_message(self):
self.label.setText("Button Clicked!")
if __name__ == "__main__":
app = QApplication(sys.argv)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
위 예제에서는 QLabel
과 QPushButton
을 생성하여 QVBoxLayout
레이아웃으로 배치한 후, 버튼을 클릭하면 display_message
메서드가 호출되어 레이블의 텍스트를 변경한다.
SQL
데이터베이스와의 통합
PyQt
는 Qt
프레임워크의 다양한 기능을 제공하며, 그 중에는 데이터베이스와의 상호작용을 위한 클래스들도 포함되어 있다. 이를 이용하여 SQL
데이터베이스와의 통합을 간편하게 할 수 있다.
아래 예제는 SQLite
데이터베이스와 PyQt
를 이용하여 데이터를 저장하고 조회하는 간단한 애플리케이션을 보여준다.
import sys
from PyQt5.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtSql import QSqlDatabase, QSqlQuery
def create_database():
db = QSqlDatabase.addDatabase("QSQLITE")
db.setDatabaseName("mydatabase.db")
if not db.open():
return False
query = QSqlQuery()
query.exec_("CREATE TABLE IF NOT EXISTS mytable (id INT PRIMARY KEY, name VARCHAR)")
return True
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel("Database Example", self)
self.button_insert = QPushButton("Insert Data", self)
self.button_insert.clicked.connect(self.insert_data)
self.button_select = QPushButton("Select Data", self)
self.button_select.clicked.connect(self.select_data)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(self.button_insert)
layout.addWidget(self.button_select)
self.setLayout(layout)
self.setWindowTitle("Database Example")
def insert_data(self):
query = QSqlQuery()
query.exec_("INSERT INTO mytable VALUES (1, 'John')")
query.exec_("INSERT INTO mytable VALUES (2, 'Jane')")
query.exec_("INSERT INTO mytable VALUES (3, 'Tom')")
def select_data(self):
query = QSqlQuery("SELECT * FROM mytable")
while query.next():
id = query.value(0)
name = query.value(1)
print(f"ID: {id}, Name: {name}")
if __name__ == "__main__":
app = QApplication(sys.argv)
if not create_database():
print("Failed to open database")
sys.exit(1)
main_window = MainWindow()
main_window.show()
sys.exit(app.exec_())
위 예제에서는 create_database
함수를 이용하여 데이터베이스를 생성하고, MainWindow
클래스에 데이터 삽입과 조회를 위한 메서드들을 구현하였다. QPushButton
을 클릭하면 데이터베이스에 데이터가 삽입되고, 조회 버튼을 클릭하면 데이터가 출력된다.
PyQt
를 사용하여 SQL
데이터베이스와의 통합을 구현하는 것은 매우 간단하며, 이를 통해 다양한 애플리케이션에서 데이터베이스를 활용할 수 있다.