romworld

Python 19 - DAO 만들기 본문

Python

Python 19 - DAO 만들기

inderrom 2023. 1. 6. 15:27

EMP 테이블을 이용해 (MS SQL 이용)

 

DAO 만들기 

 

<mssql_select2>


  
import pymssql
conn = pymssql.connect(server="", user="sa", password="", database="python", charset='utf8')
cursor = conn.cursor()
cursor.execute('SELECT * FROM emp;')
list = cursor.fetchall()
print(list)
cursor.close()
conn.close()

 


<daoemp.py>

SELECT (전체출력)


  
import pymssql
class DaoEmp:
def __init__(self):
self.conn = pymssql.connect(server="이름", user="sa", password="비밀번호", database="python", charset='utf8')
self.cursor = self.conn.cursor()
def selects(self):
self. cursor.execute('SELECT * FROM emp;')
list = self.cursor.fetchall()
return list
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
list = de.selects()
print(list)

많이 쓰는 건 전역변수로 만들어준다

전역변수로 만드려면 self

 

배열형태 출력


  
import pymssql
class DaoEmp:
def __init__(self):
self.conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
self.cursor = self.conn.cursor()
def selects(self):
self. cursor.execute('SELECT * FROM emp;')
list = self.cursor.fetchall()
mdict = []
for i in list:
mdict.append({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return mdict
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
list = de.selects()
print(list)

결과

 

 

 

return None

  • return을 생략
  • return 만 작성해도
  • return None이 자동으로 된다.

  
def select(self,e_id):
return None


SELECT(한 행)

JSON 형태로 출력


  
import pymssql
class DaoEmp:
def __init__(self):
self.conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
self.cursor = self.conn.cursor()
def selects(self):
self. cursor.execute('SELECT * FROM emp;')
list = self.cursor.fetchall()
mdict = []
for i in list:
mdict.append({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return mdict
def select(self,e_id):
self. cursor.execute('SELECT * FROM emp where e_id='+ e_id)
list = self.cursor.fetchall()
mdict = []
for i in list:
mdict.append({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return mdict[0]
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
emp = de.select("3")
print(emp)

위에 코드를 뜯어보자면 

 

파라미터로 e_id 값을 받는 메소드를 만들어서

해당 조건에 해당하는 행을 조회


  
def select(self,e_id):
self. cursor.execute('SELECT * FROM emp where e_id='+ e_id)
list = self.cursor.fetchall()
mdict = []
for i in list:
mdict.append({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return mdict[0]

한 행만 출력해야하므로 return mdict[0] 을 반환한다.

 

main 에서 파라미터에 e_id 값을 주면

해당 e_id 에 해당하는 데이터가 출력된다.


  
import pymssql
class DaoEmp:
def __init__(self):
self.conn = pymssql.connect(server="DESKTOP-N1VNJGL", user="sa", password="python", database="python", charset='utf8')
self.cursor = self.conn.cursor()
def selects(self):
self. cursor.execute('SELECT * FROM emp;')
list = self.cursor.fetchall()
mdict = []
for i in list:
mdict.append({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return mdict
def select(self,e_id):
sql = f"""
SELECT * FROM emp
where
e_id= {e_id}
"""
self. cursor.execute(sql)
i = self.cursor.fetchall()[0]
emp = ({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return emp
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
emp = de.select("3")
print(emp)

 

두번째 방법


  
def select(self,e_id):
sql = f"""
SELECT * FROM emp
where
e_id= {e_id}
"""
self. cursor.execute(sql)
i = self.cursor.fetchall()[0]
emp = ({"e_id":i[0],"e_name":i[1],"sex":i[2],"addr":i[3]})
return emp

 


 

INSERT

첫번째 방법(내가 푼 것)


  
def insert(self,e_id,e_name,sex,addr):
sql =f"""
INSERT INTO emp
VALUES({e_id},{e_name},{sex},{addr})
"""
self.cursor.execute(sql)
self.conn.commit()
cnt = self.cursor.rowcount
return cnt
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
# list = de.selects()
# emp = de.select("3")
cnt = de.insert("7","7","7","7")
print(cnt)

 

UPDATE


  
def update(self,e_id,e_name,sex,addr):
sql =f"""
UPDATE emp
SET
e_name = {e_name},
sex = {sex},
addr = {addr}
WHERE
e_id = {e_id}
"""
self.cursor.execute(sql)
self.conn.commit()
cnt = self.cursor.rowcount
return cnt
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
# list = de.selects()
# emp = de.select("3")
# cnt = de.insert("7","7","7","7")
cnt = de.update("7","8","8","8")
print(cnt)

 

DELETE


  
def delete(self,e_id):
sql = f"""
DELETE FROM EMP
WHERE
e_id={e_id}
"""
self.cursor.execute(sql)
self.conn.commit()
cnt = self.cursor.rowcount
return cnt
def __del__(self):
self.cursor.close()
self.conn.close()
if __name__ == '__main__':
de = DaoEmp()
# list = de.selects()
# emp = de.select("3")
# cnt = de.insert("7","7","7","7")
# cnt = de.update("7","8","8","8")
cnt = de.delete("7")
print(cnt)

 

Comments