Python

PyQt5 로 구현한 프로그램 이용해서 데이터베이스 다루기Python_Database -SQLite 2024.10.08.

trustworthyhand 2024. 10. 8. 16:24

 

■ 가상환경 만들기
1. 터미널 생성 python -m venv venv
2. 가상환경파일       .\venv\Scripts\activate
3. PyQt5 설치         pip install PyQt5
 - Ctrl + P 누른뒤 :> 인터프리터 venv 누르기
 
QApplication         # 기능동작
QMainWindow      # 메인창 요소
QWidget               # 안에 들어가는 공간을 형상하고 싶을때  "공간 영역 설정"
QGridLayout        # 격자
QLabel                # 글자표시
QLineEdit            #입력창 "내용을 쓰고 싶을때"
QPushButton      # 버튼기능
 #  import sys  # 시스템 제어기능을 파이썬으로 사용하고싶을때
 #  import os   # 시스템 운영체제 서비스를 파이썬으로 사용하고싶을때 사용합니다.

 

 import sys 
 from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, \ 
 QGridLayout, QLabel, QLineEdit, QPushButton

 import sqlite3

 class App(QMainWindow) :                              # 메인창 요소를 만듭니다.
     def __init__(self) :
         super().__init__()
         self.initDB()                                               #  데이터베이스를 가저온다
         self.initUI()                                                #  UI 요소를 가져온다
                 
     def initDB(self) :                                    
         connection = sqlite3.connect("fruits.db")   #  fruits.db 데이터베이스를 연결.
         cursor = connection.cursor()
         # 테이블 위에 있다면 있는거 쓰고, 없을 경우에만 새로만들기
         cursor.execute("CREATE TABLE IF NOT EXISTS fruit (name TEXT , season TEXT)")
         cursor.close()
         connection.close()          
   
     def initUI(self) :
       
         # 영역을 만들고 레이아웃 설정
         widget = QWidget()
         grid = QGridLayout()
         widget.setLayout(grid)

         # 요소 배치 : 라벨 2개, 입력창 2개, 버튼 2개
         # 라벨 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.btn = QPushButton("INSERT")
         self.btn2 = QPushButton("DELETE")
         # 이벤트 핸들러 함수 매칭하기
       
         # 클릭 되었을때 동작할 기능의 정의!
         # self.btn.clicked.connect(함수)
         self.btn.clicked.connect(self.handldeClick)
         self.btn2.clicked.connect(self.handldeClick2)
         grid.addWidget(self.btn, 2, 1)
         grid.addWidget(self.btn2, 3, 1)

       
         # 레이아웃을 설정된 영역을 메인 창에 추가하기
         self.setCentralWidget(widget)

         self.setWindowTitle("데이터베이스 프로그램")
         self.move(600, 400)
         self.show()
   
     # 버튼 클릭시 동작
    # handleClick 함수를 동작시 fruit_name , fruit_season 입력 함수 생성.
 
     def handldeClick(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()
 
    # handleClick2 함수를 동작시 fruit_name , fruit_season 삭제 함수 생성.       
     def handldeClick2(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_())

 

 

■ 위에 코드를 실행한 이후 데이터베이스에 기록이 정확히 들어갔는지 확인하는 방법입니다.

위에 코드를 실행한다음  과일 : 귤,    계절에 : 겨울을 입력하고 INSERT 를 누르면     

fruits.db 데이터파일에 데이터가 기록이 됩니다.

위에 코드를 실행한다음  과일 : 귤,    계절에 : 겨울을 입력하고 DELETE 를 누르면     

fruits.db 데이터파일에 데이터가 기록이 삭제가 됩니다.