update/delete
- 코딩 절차는 insert 와 동일
update
update_sql = "update member set tall = tall + 10 where id = %s"
with pymysql.connect(host="localhost", port = 3306, user = 'playdata', password = '1111', db = 'testdb') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(update_sql, [2])
print(cnt) # 바뀐 행 개수 출력
conn.commit()
delete
delete_sql = "delete from member where tall < %s"
with pymysql.connect(host="localhost", port = 3306, user = 'playdata', password = '1111', db = 'testdb') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(delete_sql, (170, )) # 튜플로 전달하려면 (값, ) 형식으로 넣을 것
print(cnt) # 삭제된 행 개수 출력
conn.commit()
select (DQL - Data Query Language) : 조회결과 조회
- cursor.execute("select문") 실행 후 cursor의 결과 조회 메소드(fetch메소드)를 이용해 결과를 받는다.
fetch메소드
fetchall()
- 조회한 모든 행을을 반환
fetchmany(size=개수)
- 지정한 size개수 만큼 반환
fetchone()
- 조회결과 중 첫번째 행만 반환
- 주로 pk 동등 조건으로 조회한 경우 사용
fetchall()
import pymysql
from pprint import pprint # 자료구조(list, tuple, dictionary, set)을 가독성 좋게 출력해준다.
sql = "select * from member where name like %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'testdb') as conn:
with conn.cursor() as cursor:
# select 실행결과(result set)은 cursor의 속성으로 저장된다.
cursor.execute(sql, ['%2']) # name이 2로 끝나는 경우를 조회
# cursor가 가진 조회결과 조회
result = cursor.fetchall()
print(result)
pprint
pprint(result)
member 테이블에서 지정한 키보다 큰 사람의 정보 조회
tall = float(input("조회할 키"))
sql = "select * from member where tall > %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'testdb') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, [tall]) # 조회된 행수가 반환
result = cursor.fetchall() # 조회결과가 없으면 빈 tuple를 반환.
print(len(result), cnt)
if cnt == 0:
print("조회결과 없음")
else:
show_result(result)
fetchone()
# primary key로 조회할 때 사용 (조회결과가 한행일때 사용.)
# sql = "select name, email from member where id = %s"
sql = "select name, email from member where id > %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'testdb') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql, (5, ))
print(cnt) # select 결과는 여러개
# result = cursor.fetchall()
result = cursor.fetchone() # select 결과가 여러행일 경우에 첫번째 행만 반환
print(result)
fetchmany()
sql = "select name, email from member"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'testdb') as conn:
with conn.cursor() as cursor:
cnt = cursor.execute(sql)
print(cnt)
result = cursor.fetchmany(size = 3) # size 행만큼만 조회
pprint(result)
cursor 는 iterable 타입
- for문에 select 실행한 cursor를 사용하면 조회결과를 한 행씩 조회할 수 있다.
# cursor(select 실행후)는 Iterable 타입 -> for in 에 직접 넣어서 순환조회 가능.
sql = "select * from member where tall > %s"
with pymysql.connect(host = 'localhost', port = 3306, user = 'playdata', password = '1111', db = 'testdb', cursorclass=pymysql.cursors.DictCursor # 조회행을 dictionary로 반환
) as conn:
with conn.cursor() as cursor:
# print(type(cursor))
cnt = cursor.execute("select * from member")
print("조회행수", cnt)
# result = cursor.fetchall()
for row in cursor:
print(row)
'Data_Analysis_Track_33 > Python' 카테고리의 다른 글
| Python_Pandas_01-2(벡터화, Boolean 인덱싱, 주요 메소드, 정렬, (평균, 중앙값, 표준편차/분산, 최빈값, 분위수)) (0) | 2023.09.12 |
|---|---|
| Python_Pandas_01(Pandas, Series, Index, Slicing) (0) | 2023.09.12 |
| Python_11(pymysql을 이용한 mysql 연동) (0) | 2023.09.08 |
| Python_10-2(파이썬 정규 표현식) (0) | 2023.08.29 |
| Python_10(파이썬 정규 표현식) (0) | 2023.08.28 |