본문 바로가기
Dev Notes/BE

[Database] MySQL 커넥터 비교하기

by yooonlp 2023. 5. 28.

python에서 mysql 데이터베이스에 연결할 때 사용할 수 있는 다양한 라이브러리들이 있다. 사용해본 두 가지로는 mysql-connector-python과 pymysql가 있는데, 이외에도 라이브러리들 간에 어떤 차이가 있는지 궁금해 찾아보았다.

 

mysqlclient

  • C로 구현됨
  • 가장 빠름
  • mysql-connector-c 설치 필요
  • 사용하지 못하는 경우들이 있음 (libmysqlclient를 사용할 수없거나, mysql protocol을 해킹하고 싶을때)

pymysql

  • 순수 python으로 작성됨
  • 빠른 편
  • 사용방법
import pymysql.cursors

connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             database='db',
                             cursorclass=pymysql.cursors.DictCursor)

with connection:
    with connection.cursor() as cursor:
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('aaaaaa@aaaa.com', 'secret!'))

    connection.commit()

 

mysql-connector-python

  • Oracle에서 공식적으로 지원하는 라이브러리
  • 순수 python으로 작성됨
  • 느림
  • 사용방법
import mysql.connector

cnx = mysql.connector.connect(
    host="127.0.0.1",
    port=3306,
    user="root",
    password="s3cre3t!")
    
cursor = cnx.cursor()
cursor.execute("SELECT * FROM a_table")
cnx.commit()
cursor.close()
cnx.close()

 

다른 라이브러리에의 의존성이 낮고 비교적 빠른 장점 때문에, Pymysql이 가장 흔하게 사용되고 선호된다고 한다. 하지만 쿼리를 보내는 방식보다는 sqlalchemy, peewee 등의 orm을 사용하는 것이 향후 유지보수를 위해서 더 나을듯하다.

 

 

참고자료들

 

'Dev Notes > BE' 카테고리의 다른 글

NAS vs NFS  (0) 2025.02.26
[Database] Docker로 RDBMS 사용하기 (ft. postgres, mysql)  (0) 2023.06.04
[Network] API와 gRPC vs REST  (0) 2023.05.21
[Database] ORM과 python에서 postgresql 연결하기  (0) 2023.05.16