본문 바로가기
인공지능/데이터분석

파이썬으로 MySQL 쿼리 실행하기

by hyunji00pj 2024. 10. 23.

데이터 삽입하기

데이터베이스에 데이터를 삽입하는 것은 정보를 저장하는 기본적인 작업 중 하나이다.

데이터베이스에 연결하기 위해 connect()함수를 호출한 후 커서를 생성한다

db = MySQLdb.connect(host='localhost',user='root',password='1234',db='kdt')
cur = db.cursor()

각 변수에 쿼리 실행문과 삽입할 데이터를 담은 후 

sql = 'insert into member (userid, userpw,name,hp,email,gender,ssn1,ssn2) values (%s,%s,%s,%s,%s,%s,%s,%s)'
data = ('mango','0000','마앙고','000-0030-0000','mango@mango.com','남자','000000','1211111')
data

 

('mango',
 '0000',
 '마앙고',
 '000-0030-0000',
 'mango@mango.com',
 '남자',
 '000000',
 '1211111')

SQL쿼리를 실행한 후 db.commit()을 통해 변경 사항을 적용한다

cur.execute(sql, data)
db.commit()

 

sql = 'insert into member (userid, userpw,name,hp,email,gender,ssn1,ssn2) values (%s,%s,%s,%s,%s,%s,%s,%s)'
data = [('berry','0030','베애리','010-0040-0000','berry@berry.com','여자','004000','1212111'),('grape','0100','표도르','010-0070-0000','grape@grape.com','남자','004500','1412111')]
data
cur.executemany(sql, data)#여러개 실행
db.commit()

위처럼 executemany를 통해 여러개를 실행 할 수도 있다.

 

문제2

  • 회원가입 프로그램을 만들어보자
  • 단, 중복 데이터로 인한 오류시 '다시 입력하세요'라는 오류처리와 함께 다시 등록할 수 있도록 함
  • 단, 회원 가입 후 "추가로 가입하시겠습니까? (y/n)를 입력 받아 추가로 입력할 수 있도록 함
#실행 예시
아이디를 입력하세요: XXXX
비밀번호를 입력하세요: XXXX
이름을 입력하세요: XXXX
전화번호를 입력하세요: XXXX
이메일을 입력하세요: XXXX
성별을 입력하세요: XXXX
주민등록번호 앞자리 6자리를 입력하세요: XXXX
주민등록번호 뒷자리 7자리를 입력하세요: XXXX
우편번호를 입력하세요: XXXX
주소를 입력하세요: XXXX
상세주소를 입력하세요: XXXX
참고사항을 입력하세요: XXXX
import MySQLdb
db = MySQLdb.connect(host='localhost', user='root', password='1234', db='kdt')
cur = db.cursor()
while True:
    try:
        userid = input('아이디를 입력하세요: ')
        userpw = input('비밀번호를 입력하세요: ')
        name = input('이름을 입력하세요: ')
        hp = input('전화번호를 입력하세요: ')
        email = input('이메일을 입력하세요: ')
        gender = input('성별을 입력하세요: ')
        ssn1 = input('주민번호 앞자리를 입력하세요: ')
        ssn2 = input('주민번호 뒷자리를 입력하세요: ')
        zipcode = input('우편번호를 입력하세요: ')
        address1 = input('주소를 입력하세요: ')
        address2 = input('상세주소를 입력하세요: ')
        address3 = input('참고사항을 입력하세요: ')
        sql = 'insert into member(userid, userpw, name, hp, email, gender, ssn1, ssn2, zipcode, address1, address2, address3) values (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)'
        data = (userid, userpw, name, hp, email, gender, ssn1, ssn2, zipcode, address1, address2, address3)
        cur.execute(sql, data)
        db.commit()
        print('가입되었습니다')
        yn = input('추가로 가입하겠습니까? (Y/N): ')
        if yn.lower() == 'n':
            print('프로그램을 종료합니다')
            break
    except Exception as e:
        print('다시 입력하세요')
cur.close()
db.close()

 

  • 사용자로부터 입력을 받아 MySQL 데이터베이스에 저장
  • 예외 처리(try - except)를 통해 중복 데이터 오류 발생 시 재입력을 요청
  • 사용자가 더 이상 데이터 입력을 원하지 않을 때까지 반복하여 데이터를 입력 받게함 (while)

 

db = MySQLdb.connect(host='localhost', user='root', password='1234', db='kdt')
cur = db.cursor()

sql = 'update member set zipcode = %s, address1 = %s,address2 = %s, address3 = %s where userid = %s'
data = ('12345','서울','서초구','서초동','banana')
result = cur.execute(sql,data)
db.commit()

if result > 0:
    print('수정됨')
else:
    print('에러')
cur.close()
db.close()
수정됨

 

  • update SQL 명령을 사용하여 사용자의 주소 정보를 수정
  • 수정 성공 여부를 출력함

 

 

데이터 삭제하기

db = MySQLdb.connect(host='localhost', user='root', password='1234', db='kdt')
cur = db.cursor()
sql = 'delete from member where userid = %s'
result = cur.execute(sql,('berry',))
db.commit()
if result > 0:
    print('탈퇴되었습니다')
else:
    print('에러')
cur.close()
db.close()
탈퇴되었습니다

 

  • delete SQL 명령을 사용하여 사용자를 데이터베이스에서 삭제
  • 삭제 성공 여부를 결과를 출력

 

문제3

  • 로그인 프로그램 작성
  • 아이디와 비밀번호가 맞는 유저가 있을 경우 "로그인 되었습니다",유저가 없을 경우 "아이디 또는 비밀번호를 확인하세요"라고 출력
아이디를 입력하세요: XXX
비밀번호를 입력하세요: XXX
import MySQLdb
db = MySQLdb.connect(host='localhost', user='root', password='1234', db='kdt')
cur = db.cursor()

sql = 'select userid from member where userid=%s and userpw=%s'
#sql = 'select userid = %s,userpw = %s from member' 강사님 코드
userid = input('아이디를 입력하세요:')
userpw = input('비밀번호를 입력하세요:')
data = (userid,userpw)
result = cur.execute(sql,data)
db.commit()
if result > 0:
    print('로그인 되었습니다')
else:
    print('아이디 또는 비밀번호를 확인하세요')
cur.close()
db.close()
아이디를 입력하세요: apple
비밀번호를 입력하세요: 1234
로그인 되었습니다

 

  • 사용자의 아이디와 비밀번호를 입력받아 데이터베이스에 저장된 정보와 일치하는지 검사
  • 일치하는 경우 로그인 성공 메시지를 출력하고, 그렇지 않은 경우 오류 메시지를 출력