Day14_MySQL _Python 데이터 삽입+삭제+수정+출력

2023. 3. 22. 13:06파이썬

사용 Tool  =  Jupyter Notebook

사용 module = mysql client 

 

1. 주피터 노트북 실행
2. ! pip install mysqlclient 

연결 방법

1.import MySQLdb

2. db = MySQLdb.connect(host = 'localhost', user = 'root', password = '1234', db = 'kdt')
                                                     혹은
            MySQLdb.connect('localhost','root','1234','kdt')

db라는 변수에 MySQLdb 모듈의 connect 메소드를 사용하여 객체 생성 (db는 객체)

db는 MySQL 기능 다 쓸 수 있다.

 

 

cursor 생성하기

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

작업환경을 만들게 해준다.
cur = db.cursor() 

sql = 'select userid,username,hp,email,gender from member'
cur.execute(sql) # execute는 커서 객체에서 제공

SQL문 결과 가져오기

 

fetchall(): 한번에 모든 tuple을 가져온다. 
검색 결과가 너무 크다면 메모리 오버헤드가 발생 할 수 있다   / 데이터가 다 끝나면 안가져옴

fetchone(): 한번에 하나의 tuple만 가져옴 
다시 메서드를 호출하면, 다음 데이터 1개를 가져온다. / 데이터가 다 끝나면 안가져옴

 

예시

sql = 'select userid,username,hp,email,gender from member'

cur.execute(sql)
while True:
    row = cur.fetchone()
    if row:
        print(row)
    else:
        break
해석: sql 문법을 cur로 실행 -> member 테이블을 한줄씩 프린트 

 

예시

해석:
cursor를 dictionary만드는 커서로 변경 
sql문 실행 
실행 후 f' 에 맞는 방식으로 출력

 

DB에 데이터 삽입하기

 

sql = "insert into member (userid,userpw,username,hp,email,gender,ssn1,ssn2) 
values (%s,%s,%s,%s,%s,%s,%s,%s)"

data = ('avocado','8888','아보카도','010-8888-8888','avocado@avocado.com','m','888888','8888888')
cur.execute(sql,data)

db.commit() # 이문장을 꼭 쳐야 된다
해석
1. sql문으로 데이터 추가 작성 ( 단 ! values는 변수 처리 해줘야함)
2. data라는 튜플형식 변수에 데이터 입력
3. cur.execute(sql문,튜플형식 데이터) 입력 
4. db.commit()으로 적용 

 

DB에 데이터  2개 이상 삽입하기

 

sql = "insert into member (userid,userpw,username,hp,email,gender,ssn1,ssn2) values (%s,%s,%s,%s,%s,%s,%s,%s)"
data = [('watermelon','9999','수박','010-9999-9999','watermelon@watermelon.com','m','999999','9999999'),
       ('peach','7890','복숭아','010-7890-7890','peach@peach.com','m','456789','4567890')]
       
cur.executemany(sql,data)
db.commit()

 

 

해석
1. sql문으로 데이터 추가 작성  ( 단 ! values는 변수 처리 해줘야함)
2. 삽입할 행이 2개임으로 각각 1개 1개를 튜플로 묶고, 큰 리스트 하나에 담는다.
3. 위와 같음

 

 

DB에 데이터 삭제하기

 

import MySQLdb
db = MySQLdb.connect('localhost','root','1234','kdt')
cur = db.cursor()

sql = "delete from member where userid = 'avocado'"

result = cur.execute(sql)
db.commit()

if result > 0:
    print('탈퇴 되었습니다.')
    
else:
    print('오류 !!')

 

해석

1. sql문으로 userid가 avocado인 데이터를 삭제 작성
2. result 라는 변수에 실행 결과를 담음 (결과 int !)
3. result가 삭제 처리되어서 1이상으로 표시되면  탈퇴 출력
4. 아니면 오류 출력 

728x90