Python(2) - MySQL 연결
Python 관련 포스팅
- Python(1) - Django 설치
- Python(2) - MySQL 연결
- Python(3) - PostgreSQL 연결
- Python(4) - Query 만들기
- Python(5) - Django 가상 환경과 settings.py
1. pymysql 설치
$ pip install pymysql
입력
2. DB 연결
- import
connect()
에 DB 기본 정보 입력import pymysql conn = pymysql.connect(host="localhost", user="root", password="1234", db="dbpractice", charset="utf8")
3. cursor 설정
cursor()
로 cursor 가져오기- 실행 결과가 tuple로 반환됨
curs = conn.cursor()
- 실행 결과를 dictionary로 반환하려면,
parameter로 pymysql.cursors.DictCursor 전달curs = conn.cursor(pymysql.cursors.DictCursor)
- 실행 결과가 tuple로 반환됨
tuple 자료형
→ 요솟값이 ()에 둘러싸임
t3 = (1, 2, 3)
dictionary 자료형
→ Key : Value 쌍 여러 개가 쉼표(,)로 구분되어 { }로 둘러싸여 있음
→ Key에는 변하지 않는 고윳값을 사용
→ Value에는 문자열과 리스트 모두 사용 가능
{Key1:Value1, Key2:Value2, Key3:Value3, …}
4. CRUD query문 작성
execute()
에 작성-
사용할 db 선언(
USE
) 후 용도에 맞는 query문 작성 시작
→'USE [사용할 DB이름];'
curs.execute('USE dbpractice;') # cursor를 가져온 상태에서 sql문을 실행
(1) INSERT
execute()
에 query문 작성 후,commit()
과close()
를 실행curs.execute('INSERT INTO user (id, name, region, insdt) VALUES("hong", "홍길동", "서울", now());') conn.commit() conn.close()
- sql 변수를 만들어 query문 쓰는 방법
sql = "INSERT INTO user (id, name, region, insdt) VALUES('hong2', '홍길동2', '서울2', now())" curs.execute(sql) conn.commit() conn.close()
(2) SELECT
sql = "SELECT * FROM user"
curs.execute(sql)
rows = curs.fetchall() # 실행한 데이터를 가져옴
print(rows) # 모든 행을 가져옴
conn.close()
sql = "SELECT * FROM user WHERE region=%s"
curs.execute(sql)
curs.execute(sql, '서울') # %s에 들어갈 문자열을 추가함
rows = curs.fetchall() # 실행한 데이터를 가져옴
print(rows[2], ["region"]) # 특정 행, 열의 내용을 가져옴
conn.close()
fetchall()
: 모든 레코드를 가져옴fetmany()
: 지정한 개수만큼의 레코드를 가져옴fetchone()
: 하나의 레코드만 가져옴
(3) UPDATE
sql = "UPDATE user SET name='포로리' WHERE name='테스트'"
curs.execute(sql)
conn.commit()
conn.close()
(4) DELETE
sql = "DELETE FROM user WHERE name='홍길동'"
curs.execute(sql)
conn.commit()
conn.close()