■ 가상환경 만들기
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 데이터파일에 데이터가 기록이 삭제가 됩니다.
'Python' 카테고리의 다른 글
Python 복습 2024.10.10 (0) | 2024.10.10 |
---|---|
Python_Database -SQLite 2024.10.07. (4) | 2024.10.08 |
Python_Database -SQLite 2024.10.07. (0) | 2024.10.07 |
PyQt5 파이썬 학습 GUI 연습하기.2024.10.04. (0) | 2024.10.04 |
Python 뷰티풀수프 이용해서 관심 종목의 현재가 구하기 (6) | 2024.09.27 |