# 단어, 뜻, 레벨 찾아서 가져오는 클래스
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 getEng(self):
return self.eng
def setKor(self, kor):
self.kor = kor
def getKor(self):
return self.kor
def setLev(self, lev):
self.lev = lev
def getLev(self):
return self.lev
def getLev(self):
return self.lev
###### db 연결/해제시켜주는 클래스
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): # word 객체 받기 영단어 뜻가져오기
self.connect() # db연결하기
cur = self.db.cursor() # 커서 만들기 (전역db를 커서에 넣기)
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 = %s
# sql = """select eng, kor, lev from voca where eng like '%%s%'"""
sql = "select eng, kor, lev from voca where eng like concat('%%', %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 delect(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)
start = Menu()
start.run()
'DataBase' 카테고리의 다른 글
⏺과제 _ 축구선수관리 프로그램 기획 (0) | 2024.04.01 |
---|---|
4-1. 파이썬 MySQL 연결 (1) | 2024.03.28 |
3-3. My SQL 사용자 수정 (0) | 2024.03.27 |
3-2. 뷰(view), 다이어그램(Diagram) (0) | 2024.03.27 |
3-1. MySQL 문자열 함수, 유니온, 서브쿼리 (0) | 2024.03.27 |