1. MySQL Client
(1) 설치 명령어
# mysql 연동 라이브러리 설치 명령어
!pip install mysqlclient
(2) connection 객체 생성
import MySQLdb
# host='ip주소', user='사용자명', password='비밀번호', db='데이터베이스명'
db = MySQLdb.connect(host='localhost', user='root', password='1234', db='kdt')
print(db)
# <_mysql.connection open to 'localhost' at 000001C6BF9DC590>
2. Cursor
하나의 데이터베이스 connection에 대해 독립적으로 SQL문을 실행할 수 있는 작업 환경을 제공하는 객체
(1) Tuple로 조회 결과 확인
1) fetchall() : select 모든 결과를 한 번에 2차원 Tuple로 리턴 (결과가 많으면 오버헤드 발생)
cur = db.cursor()
cur.execute('select userid, name, gender, hp from member') # 조회된 row수 출력
data = cur.fetchall()
print(data)
# (
# ('apple', '김사과', '여자', '010-1111-1111'), ('avocado', '안카도', '남자', '010-5555-5555')
# , ('banana', '반하나', '여자', '010-2222-2222'), ('melon', '이메론', '남자', '010-4444-4444')
# , ('orange', '오렌지', '여자', '010-3333-3333')
# )
2) fetchone() : 한 row를 Tuple로 리턴
cur = db.cursor()
cur.execute('select userid, name, gender, hp from member')
one = cur.fetchone()
print(one) # ('apple', '김사과', '여자', '010-1111-1111')
one = cur.fetchone()
print(one) # ('avocado', '안카도', '남자', '010-5555-5555')
(2) 딕셔너리로 조회 결과 확인
cur = db.cursor(MySQLdb.cursors.DictCursor)
sql = 'select userid, name, gender, hp from member'
cur.execute(sql)
while True:
result = cur.fetchone()
if result:
items = result.items()
for i in items:
print(f'{i[0]}: {i[1]}', end=', ')
print()
else:
break
# 출력 결과
userid: apple, name: 김사과, gender: 여자, hp: 010-1111-1111,
userid: avocado, name: 안카도, gender: 남자, hp: 010-5555-5555,
userid: banana, name: 반하나, gender: 여자, hp: 010-2222-2222,
userid: melon, name: 이메론, gender: 남자, hp: 010-4444-4444,
userid: orange, name: 오렌지, gender: 여자, hp: 010-3333-3333,
(3) cursor와 connection 마무리 작업
cur.close()
db.close()
(4) INSERT
1) 단일 row 저장
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', '마앙고', '010-0000-0000', 'mango@mango.com', '남자', '000000', '1111111')
cur.execute(sql, data)
db.commit()
cur.close()
db.close()
2) 여러 row 저장
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 = [('berry', '9999', '배애리', '010-9999-9999', 'berry@berry.com', '여자', '999999', '9999999'), ('grapes', '8888', '표도르', '010-8888-8888', 'grapes@grapes.com', '남자', '888888', '8888888')]
cur.executemany(sql, data)
db.commit()
cur.close()
db.close()
(5) UPDATE
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()
(6) DELETE
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()
'Python > 개요 및 문법' 카테고리의 다른 글
개요 (1) | 2024.10.15 |
---|---|
SQL 연동 단어장 예제 (1) | 2024.10.14 |
디렉토리 관리 프로그래밍 (1) | 2024.10.07 |
파일 입출력 모드 (4) | 2024.10.02 |
변수 타입 어노테이션 (1) | 2024.10.02 |