Python에서 MySQL데이터 접근하기
Mysql 사용자 추가하기
1. MySQL 관리자로 로그인
$ mysql -u root -p
Enter password:
2. 로컬에서 접속 가능한 사용자 추가
mysql> CREATE user '사용자'@'localhost' IDENTIFIED BY '사용자_비밀번호';
3. DB 권한 부여하기
mysql> GRANT ALL PRIVILEGES ON *.* to '사용자'@'localhost'; # 모든 DB 접근 가능 *.*
mysql> GRANT ALL PRIVILEGES ON db_name.* to '사용자'@'localhost'; # 특정 DB에만 접근 가능
mysql> FLUSH PRIVILEGES; # 새로운 세팅 적용
4. 사용자 계정 삭제
mysql> DROP USER '사용자'@'localhost';
Python에서 MySQL 접속하기
Python의 MySql모듈 종류
- PyMySQL
- mysql-connector-python ( >= MySQL 8.0) or mysql.connector (< MySQL 8.0)
PyMySQL를 이용하여 접근하는 방법
$ pip install PyMySQL
접속 방법
- PyMySql 모듈 import
- MySQL 연결: pymysql.connect()
- 호스트명, 로그인, 암호, 접속할 DB 등 지정 - DB커서 객체생성: Connection 객체로부터 cursor() 호출
- SQL문 실행
- Cursor객체의 메소드를 사용하여 SQL을 DB서버에 전송 & Fetch
- SQL을 DB서버에 전송: execute()
- Fetch: fetchall(), fetchone(), fetchmany(n)
- Connection 객체의 commit() : 삽입, 갱신, 삭제 (INSERT/UPDATE/DELETE)
- Cursor객체의 메소드를 사용하여 SQL을 DB서버에 전송 & Fetch
- DB 연결 종료: Connection객체의 close()
# STEP 1
import pymysql
# STEP 2: MySQL Connection 연결
con = pymysql.connect(host='localhost', user='mysql_user_id', password='_password_',
db='access_db', charset='utf8')
# STEP 3: Connection 으로부터 Cursor 생성
cur = con.cursor()
# STEP 4: SQL문 실행 및 Fetch
sql = "SELECT player, birth FROM baseball"
cur.execute(sql)
# -> 데이터 Fetch
rows = cur.fetchall()
print(rows) # 전체 rows
# STEP 5: DB 연결 종료
con.close()
STEP2에서 MySQL Connection 연결할 때 아래 옵션도 넣어줄 수 있다.
# 결과 DB 반영 (Insert or update)
autocommit=True
# DB조회시 컬럼명을 동시에 보여줌.
cursorclass=pymysql.cursors.DictCursor
예시)
import pymysql
import pandas as pd
con = pymysql.connect(host='localhost', user='root', password='root'
,db='access_db'
,charset='utf8'
,autocommit=True
,cursorclass=pymysql.cursors.DictCursor
)
cur = con.cursor()