파이썬 스크립트를 통해 mysql 데이터베이스를 다뤄야 할때가 있습니다. 파이썬은 mysql과의 연동을 위해 pymysql이라는 모듈을 제공하는데요. 해당 모듈을 사용하면 파이썬을 사용하여 쉽게 mysql db를 다룰 수 있습니다. 그럼 지금부터 pymysql을 통한 mysql 데이터베이스 다루는 예제를 살펴보도록 하겠습니다.
사전준비
접속에 필요한 mysql database를 확보해야 합니다.
python3에서 진행합니다.
pymysql을 설치합니다.
pymysql 인스톨
$ pip install pymysql
명령어를 통해 pymysql을 설치합니다.
이후 파이썬에서는 아래와 같이 해당 모듈을 임포트하여 사용합니다.
import pymysql
데이터베이스 생성
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', charset='utf8')
cursor = conn.cursor()
sql = "CREATE DATABASE developer"
cursor.execute(sql)
conn.commit()
conn.close()
데이터베이스를 생성하는 코드는 위와 같습니다. developer라는 데이터베이스를 만들라는 명령문을 execute 함수를 사용해 실행합니다.
mysql 화면
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| developer |
| mysql |
| performance_schema |
| sys |
+--------------------+
5 rows in set (0.00 sec)
developer란 database가 생성된 것을 보실 수 있습니다.
테이블 생성
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', db='developer', charset='utf8')
cursor = conn.cursor()
sql = '''CREATE TABLE user (
id int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
email varchar(255),
department varchar(255)
)
'''
cursor.execute(sql)
conn.commit()
conn.close()
데이터베이스 안에 테이블을 사용하기 위해서는 CREATE TABLE 명령어를 이용합니다. connect하는 부분에서 사용할 데이터베이스 명을 명시해 줍니다.
mysql 화면
mysql> desc user;
+------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| email | varchar(255) | YES | | NULL | |
| department | varchar(255) | YES | | NULL | |
+------------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)
작성한 대로 테이블 스키마가 보이는 것을 확인하실 수 있습니다.
테이터 삽입 (insert)
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', db='developer', charset='utf8')
cursor = conn.cursor()
sql = "INSERT INTO user (email, department) VALUES (%s, %s)"
cursor.execute(sql,("developer_lim@limcoding.com", "AI"))
cursor.execute(sql,("developer_kim@limcoding.com", "AI"))
cursor.execute(sql,("developer_song@limcoding.com", "AI"))
conn.commit()
conn.close()
생성한 테이블에 데이터를 추가(insert) 합니다. "AI"부서에 3명을 추가합니다.
mysql 확인
mysql> select * from user;
+----+---------------------------+------------+
| id | email | department |
+----+---------------------------+------------+
| 1 | developer_lim@limcoding.com | AI |
| 2 | developer_kim@limcoding.com | AI |
| 3 | developer_song@limcoding.com | AI |
+----+---------------------------+------------+
3 rows in set (0.00 sec)
3명이 추가된 것을 확인하실 수 있습니다.
데이터 검색
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', db='developer', charset='utf8')
cursor = conn.cursor()
sql = "SELECT * FROM user where department = %s"
cursor.execute(sql, ("AI"))
res = cursor.fetchall()
for data in res:
print(data)
conn.commit()
conn.close()
특정 테이블에 있는 정보를 확인합니다. AI 부서에 있는 개발자 명단을 받아오는 코드입니다. fetchall을 하면 모든 정보를 가져옵니다. fetchone을 하는 경우 하나의 데이터만 가져오게 됩니다.
파이썬 실행화면
root@vultr:~/python_test# python pymy.py
(1, u'developer_lim@limcoding.com', u'AI')
(2, u'developer_kim@limcoding.com', u'AI')
(3, u'developer_song@limcoding.com', u'AI')
데이터 수정 (update)
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', db='developer', charset='utf8')
cursor = conn.cursor()
sql = "UPDATE user SET department = %s WHERE email = %s"
cursor.execute(sql, ("Testing", "developer_song@limcoding.com"))
conn.commit()
conn.close()
테이터를 수정하는 방법은 위와 같습니다. developer_song을 Testing부서로 옮깁니다.
mysql 화면
mysql> select * from user;
+----+---------------------------+------------+
| id | email | department |
+----+---------------------------+------------+
| 1 | developer_lim@limcoding.com | AI |
| 2 | developer_kim@limcoding.com | AI |
| 3 | developer_song@limcoding.com | Testing |
+----+---------------------------+------------+
3 rows in set (0.00 sec)
위 파이썬을 실행하면 해당 개발자의 부서가 변경된 것을 확인하실 수 있습니다.
데이터 삭제
import pymysql
conn = pymysql.connect(host='localhost', user='root', password='password', db='developer', charset='utf8')
cursor = conn.cursor()
sql = "DELETE FROM user WHERE email = %s"
cursor.execute(sql, ("developer_song@limcoding.com"))
conn.commit()
conn.close()
데이터를 삭제하는 코드입니다. developer_song이 퇴사를 하는 바람에 데이터베이스에서 삭제를 하였습니다.
mysql 화면
mysql> select * from user;
+----+--------------------------+------------+
| id | email | department |
+----+--------------------------+------------+
| 1 | developer_lim@limcoding.com | AI |
| 2 | developer_kim@limcoding.com | AI |
+----+--------------------------+------------+
2 rows in set (0.00 sec)
해당 코드를 실행하면 mysql에서 지워진 것을 확인하실 수 있습니다.
이처럼 pymysql을 사용하면 python을 활용하여 mysql의 데이터에 접근하실 수 있습니다!
감사합니다.
'Python' 카테고리의 다른 글
[python] 파이썬 명령행 인자 받기 (sys.argv) (1) | 2019.12.24 |
---|---|
[python] 파이썬 스크립트 실행 시간 측정 (0) | 2019.12.24 |
[Python] 파이썬에서 __init__.py 의 의미 (0) | 2019.11.25 |
[Python] 파이썬에서 if __name__ == "__main__" 의 의미 (0) | 2019.11.25 |
[Python] 파이썬 라이브러리와 프레임워크의 차이 (0) | 2019.11.25 |