티스토리 뷰
import MySQLdb
# Words 클래스
class Words:
def __init__(self, eng, kor, lev=1):
self.eng = eng
self.kor = kor
self.lev = lev
def setEng(self, eng):
self.eng = eng
def setKor(self, kor):
self.kor = kor
def setLev(self, lev):
self.lev =lev
def getEng(self):
return self.eng
def getKor(self):
return self.kor
def getLev(self):
return self.lev
# SQL에서 작동할 클래스
class WordsDao:
def __init__(self):
self.db = None
def connect(self):
self.db = MySQLdb.connect('localhost', 'root', '1234', 'kdt')
def disconnect(self):
self.db.close()
def insert(self, word):
self.connect()
cur = self.db.cursor()
sql = 'insert into voca (eng, kor, lev) values (%s, %s, %s)'
data = (word.getEng(), word.getKor(), word.getLev())
cur.execute(sql, data)
self.db.commit()
cur.close()
self.disconnect()
def selectAll(self):
self.connect()
cur = self.db.cursor(MySQLdb.cursors.DictCursor)
sql = 'select eng, kor, lev from voca order by eng asc'
cur.execute(sql)
row = cur.fetchall()
cur.close()
self.disconnect()
return row
def search(self, eng):
self.connect()
cur = self.db.cursor(MySQLdb.cursors.DictCursor)
# select eng, kor, lev from voca where eng like %pp%; 이렇게 하고 싶으면 """
# sql = "select eng, kor, lev from voca where eng like concat('%%', s%. '%%')"
sql = 'select eng, kor, lev from voca where eng = %s'
data = (eng, )
cur.execute(sql, data)
row = cur.fetchall()
cur.close()
self.disconnect()
return row
def update(self, word):
self.connect()
cur = self.db.cursor()
sql = 'update voca set kor=%s, lev=%s where eng=%s'
data = (word.getKor(), word.getLev(), word.getEng())
result = cur.execute(sql, data)
self.db.commit()
if result > 0:
print('수정되었습니다.')
else:
print('에러')
cur.close()
self.disconnect()
def delete(self, eng):
self.connect()
cur = self.db.cursor()
sql = 'delete from voca where eng=%s'
data = (eng,)
result = cur.execute(sql, data)
self.db.commit()
if result > 0:
print('삭제되었습니다.')
else:
print('오류')
cur.close()
self.disconnect()
# 기능을 담은 클래스
class WordsService():
def __init__(self):
self.dao = WordsDao()
def insertWord(self):
eng = input('단어 입력 :')
kor = input('뜻 입력 :')
lev = input('레벨 입력 :')
word = Words(eng, kor, lev)
self.dao.insert(word)
def printAll(self):
datas = self.dao.selectAll() # 딕셔너리 전체
for data in datas:
print(f"{data['eng']}, 뜻:{data['kor']}, 레벨:{data['lev']}")
def searchWord(self):
eng = input('검색할 단어 :')
datas = self.dao.search(eng)
if datas:
for data in datas:
print(f"{data['eng']}, 뜻:{data['kor']}, 레벨:{data['lev']}")
else:
print('찾는 단어가 없습니다.')
def editWord(self):
eng = input('수정할 단어 :')
word = self.dao.search(eng)
if not word:
print('수정할 단어가 없습니다.')
else:
kor = input('새로운 뜻을 입력 :')
lev = input('새로운 레벨을 입력 :')
word = Words(eng, kor, lev)
self.dao.update(word)
def delWord(self):
eng = input('삭제할 단어 :')
word = self.dao.search(eng)
if not word:
print('삭제할 단어가 없습니다.')
else:
self.dao.delete(eng)
#메뉴화면 클래스
class Menu:
def __init__(self):
self.service = WordsService()
def run(self):
while True:
try:
menu = int(input('1.등록하기 2.출력하기 3.검색하기 4.수정하기 5.삭제하기 6.종료하기'))
if menu == 1:
self.service.insertWord()
elif menu == 2:
self.service.printAll()
elif menu == 3:
self.service.searchWord()
elif menu == 4:
self.service.editWord()
elif menu == 5:
self.service.delWord()
elif menu == 6:
print('프로그램 종료')
break
except Exception as e:
print(e)
print('다시 입력하세요')
'Python' 카테고리의 다른 글
30. 파이썬, MySQL 연동해서 DB프로그램 기획하기 (0) | 2024.04.01 |
---|---|
28. 파이썬과 MySQL 연동 (0) | 2024.03.28 |
27. (과제5) 디렉토리 정리 프로그램 활용 (1) | 2024.03.25 |
26. (과제4) 영어 단어장 기능 추가 (1) | 2024.03.23 |
25. 디렉토리 관련 프로그램 (0) | 2024.03.22 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- CSS
- 폼
- FOR
- MySQLdb
- DB단어장
- 줄 간격
- Enclosing
- EPL정보프로그램
- DB프로그램만들기
- MySQL
- 상대위치
- html이론
- Python
- 클래스문
- __call__
- 고정위치
- HTML
- 변수
- trasform
- 파이썬SQL연동
- animation적용
- 리스트
- 출력
- 셋
- 절대위치
- 닷홈
- 솔로의식탁
- 로또번호생성
- JavaScript
- 박스사이징
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
글 보관함