본문 바로가기
데이터베이스

4. 파이썬과 MySQL 연동

by 곽정우 2024. 3. 28.

1. MySQLclient

  • 파이썬에서는 MySQL 서버와 통신할 수 있는 파이썬용 데이터베이스 커넥터를 다양하게 지원
  • PyMySQL, mysqlclient를 가장 많이 사용함
  • 사용법은 비슷하나 속도가 빠른 mysqlclient를 권장하고 있음
pip install mysqlclient
    
import MySQLdb

 

1-1. MySQL 접속하기

  • MySQLdb.connect(host='IP주소', user='사용자', password='비밀번호',db='DB명')

 

1-2. cursor 생성하기

  • 하나의 DataBase Connection에 대해 독립적을 SQL문을 실행할 수 있는 작업환경을 제공하는 객체
  • 하나의 connection에에 동시에 한 개의 cursor만 생성할 수 있으며, cursor를 통해 SQL문을 실행하면 실행결과를 튜플 단위로 반환

 

1-3. SQL문 결과 가져오기

  • fetchall(): 한번에 모든 tuple을 가져옴, 검색 결과가 매우 많다면 메모리 오버헤드가 발생할 수 있음
  • fetchone(): 한번에 하나의 tuple을 가져옴, 다시 fetchone() 메서

 

1-4. dict 형태로 결과를 반환하기

  • cursor(MySQLdb.cursors.DictCursor)

 

1-4. Cursor와 Connection 닫아주기

 

2. 데이터 삽입하기

다수의 데이터 입력시 'many' 사용

 

문제

  • 회원가입 프로그램을 만들어보자
  • 단, 중복 데이터 또는 잘못된 데이터로 인한 오류시 '다시 입력하세요' 라는 메세지와 함께 다시 등록
  • 단, 회원 가입 후 '추가로 가입하시겠습니까?(Y/n)'을 입력받아 추가로 입력할 수 있도록

 

3. 데이터 수정하기

 

4. 데이터 삭제하기

 

문제

  • 로그인 프로그램을 작성해보자
  • 아이디, 비밀번호가 맞을 경우 '로그인 되었습니다', 틀린 경우 '아이디 또는 비밀번호를 확인하세요'라고 출력
import MySQLdb
db = MySQLdb.connect('localhost', 'root', '1111', 'kdt')
cur = db.cursor()

userid = input('아이디를 입력하세요: ')  
userpw = input('비밀번호를 입력하세요: ')

sql = 'select userid from member where userid=%s and userpw=%s'  
data = (userid, userpw)  
result = cur.execute(sql, data)

if result > 0:  
print('로그인 되었습니다')  
else:  
print('아이디 또는 비밀번호를 확인하세요.')

cur.close()  
db.close()