파이썬 외장 모듈인 GUI 프로그램 PyQt5를 사용해서
간단한 데이터베이스를 만든 뒤 표시되게 하는 작업을 해보겠습니다!
코드 위에 주석으로 각 기능들을 설명해두었습니다.
'''
PyQt 로 만든 창 안에서
데이터베이스 테이블에 데이터 추가가 가능하도록
기능을 구현해보자!
추가할 기능
1. 생성자 안에 데이터베이스 테이블 추가 작업 넣기
2. 버튼 누르면 데이터베이스 테이블에 데이터 삽입되게 하기
'''
# PyQt가 제공하는 여러 모듈들을 가져옵니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, \
QGridLayout, QLabel, QLineEdit, QPushButton
#SQL도 가져와줍니다
import sqlite3
class App(QMainWindow) :
def __init__(self):
super().__init__()
self.initDB()
self.initUI()
# fruits라고 이름짓는 DB를 만들어줍니다
def initDB(self):
connection = sqlite3.connect("fruits.db")
cursor = connection.cursor()
# 테이블이 있다면 있는 거 쓰고, 없을 경우에만 새로 만들기
cursor.execute("CREATE TABLE IF NOT EXISTS fruit(name TEXT, season TEXT)")
cursor.close()
connection.close()
# UI를 만들어줍니다!
def initUI(self) :
# 영역 만들고 레이아웃 설정
widget = QWidget()
grid = QGridLayout()
widget.setLayout(grid)
# 요소 배치 : 라벨 2개, 입력창 2개, 버튼 1개
# 라벨 2개 만들기
grid.addWidget(QLabel("과일 :"), 0, 0)
grid.addWidget(QLabel("계절 :"), 1, 0)
# 입력창 2개 만들기
self.le1 = QLineEdit()
self.le2 = QLineEdit()
grid.addWidget(self.le1, 0, 1)
grid.addWidget(self.le2, 1, 1)
# 버튼 2개 만들기!
self.btn1 = QPushButton("INSERT")
self.btn2 = QPushButton("DELETE")
# 이벤트 핸들러 함수 매칭하기
# 클릭 되었을 때 동작할 기능의 정의!
self.btn1.clicked.connect(self.handleClick1)
self.btn2.clicked.connect(self.handleClick2)
grid.addWidget(self.btn1, 2, 1)
grid.addWidget(self.btn2, 3, 1)
# 레이아웃 설정된 영역을 메인 창에 추가하기
self.setCentralWidget(widget)
self.setWindowTitle('데이터베이스 프로그램')
self.move(600, 400)
self.show()
# self.btn1.clicked.connect(self.???) 버튼 클릭시 작동될 함수들을 정의해줍니다!
def handleClick1(self) :
fruit_name = self.le1.text()
fruit_season = self.le2.text()
connection = sqlite3.connect("fruits.db")
cursor = connection.cursor()
cursor.execute(f"INSERT INTO fruit VALUES ('{fruit_name}', '{fruit_season}')")
connection.commit()
cursor.close()
connection.close()
def handleClick2(self) :
fruit_name = self.le1.text()
fruit_season = self.le2.text()
connection = sqlite3.connect("fruits.db")
cursor = connection.cursor()
cursor.execute(f"DELETE FROM fruit WHERE name='{fruit_name}' AND season='{fruit_season}'")
connection.commit()
cursor.close()
connection.close()
# 내가 직접 이 파일을 실행하는 경우 써줘야 하는 함수!
if __name__ == '__main__':
app = QApplication(sys.argv)
view = App()
sys.exit(app.exec_())
해당 코드를 입력 후 실행시키면
해당 프로그램이 생성됩니다.
fruit테이블에 name과 season이란 열을 가진 데이터베이스를 생성해 두었기때문에
INSERT시 데이터베이스에 추가되어 저장되고 DELETE시 삭제됩니다.