언어 Language/파이썬 Python

파이썬python에서 인기 있는 mysql 팩키지, PyMySQL

Tap to restart 2021. 2. 19. 16:00

사용법이 아주 간단하다.


출처: github PyMySQL

import pymysql.cursors

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

with connection:
    with connection.cursor() as cursor:
        # Create a new record
        sql = "INSERT INTO users (email, password) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))
		row_id = cursor.lastrowid
    # connection is not autocommit by default. So you must commit to save
    # your changes.
    connection.commit()

    with connection.cursor() as cursor:
        # Read a single record
        sql = "SELECT id, password FROM users WHERE email=%s"
        cursor.execute(sql, ('webmaster@python.org',))
        result = cursor.fetchone()
        print(result)

출력 결과

{'password': 'very-secret', 'id': 1}

추가된 행의 id를 알고 싶다면 cursor.lastrowid로 확인할 수 있다.

 

예제에는 INSERT만 있다, INSERT, UPDATE, DELETE 마찬가지이기 때문으로 보인다.

 

아래 예처럼 mysql_config 따로 저장해두고

mysql_config = {
    'user': os.getenv('MYSQL_USER'),
    'password': os.getenv('MYSQL_PASSWORD'),
    'host': os.getenv('MYSQL_HOST'),
    'database': 'MYSQL_DB',
    'cursorclass': pymysql.cursors.DictCursor
}

불러서 쓰면 유지보수가 간편해진다.

connection = pymysql.connect(**mysql_config)

 

mysql.connector보다 코드가 단순하다.

출처: Querying Data Using Connector/Python

 

위 코드 예처럼 매번 귀찮게 close()를 해줘야 한다. 그래서 이 팩키지를 쓰지 않고 PyMySQL을 많이 쓰는 거 같다.

 

참고로 구글 앱 엔진 장고 샘플 파일을 살펴보면 pymysql을 쓰고 있는 것을 볼 수 있다.

잘 모르겠으면 유명한 개발자들이 쓰는 거, 사람들이 제일 많이 쓰는 걸 쓰는 게 안전하다.

(출처: standard_python3/django/mysite/settings.py)