파이썬에서 Mysql 사용하는 간편한 방법(feat.pymysql)

반응형
    반응형

    파이썬에서 Mysql 사용하는 간편한 방법(feat.pymysql)

    데이터베이스와의 연결은 애플리케이션 활용에 아주 중요한 역할을 합니다. 특히 Mysql은 오프소스 RDBMS로 전세계적으로 사용되고 있기 때문에 Mysql와의 연결은 아주 중요한데요. 파이썬에선 PyMySQL을 이용해 Mysql와의 연동이 가능합니다.

    PyMySQL이란?

    PyMySQL은 파이썬에서 MySQL 서버와 연결할 수 있도록 도와주는 라이브러리입니다. 기본적으로 MySQL 클라이언트와 통신하는 데 필요한 모든 기능을 제공합니다. PyMySQL은 순수 파이썬으로 작성되었기 때문에 MySQL C API의 래퍼(wrapper)로서 작동하는 다른 라이브러리들과 달리 외부 의존성이 없다는 장점이 있습니다.

    PyMySQL의 주요 기능

    1. MySQL 데이터베이스 연결: PyMySQL은 MySQL 데이터베이스와의 연결을 쉽게 설정할 수 있습니다. 데이터베이스의 호스트, 사용자 이름, 비밀번호, 데이터베이스 이름 등을 지정하여 간단히 연결할 수 있습니다.
    2. SQL 쿼리 실행: PyMySQL을 사용하면 SELECT, INSERT, UPDATE, DELETE와 같은 SQL 쿼리를 실행할 수 있습니다. 쿼리 실행 결과는 파이썬 객체로 반환되므로, 이를 활용해 다양한 데이터 처리 작업을 수행할 수 있습니다.
    3. 트랜잭션 처리: PyMySQL은 트랜잭션 관리 기능을 제공합니다. 트랜잭션을 시작하고, 커밋(commit) 또는 롤백(rollback)을 수행하여 데이터 일관성을 유지할 수 있습니다.
    4. Prepared Statements: PyMySQL은 SQL 인젝션 공격을 방지하기 위해 파라미터화된 쿼리를 지원합니다. 이 기능을 통해 안전하게 사용자 입력을 처리할 수 있습니다.

    PyMySQL의 장점

    • 가벼운 설치: 외부 의존성 없이 순수 파이썬으로 작성되어, 설치 및 배포가 간편합니다.
    • 유연성: 다양한 MySQL 기능을 지원하며, 필요한 기능만을 선택적으로 사용할 수 있습니다.
    • 보안: Prepared Statements를 통해 SQL 인젝션과 같은 보안 취약점을 방지할 수 있습니다.

    PyMySQL 설치 및 기본 사용법

    바로 해봅시다. PyMySQL은 pip을 통해 설치할 수 있습니다.

    pip install pymsyql

    Mysql을 연결하는 코드는 다음과 같습니다. connect()를 사용합니다.

    import pymysql
    # 데이터베이스 연결 설정
    connection = pymysql.connect(
    host = 'localhost', user='root',password='password',database='test_db',port='port'
    )

     

    필수로는 host,user,password,database는 반드시 써주어야 합니다. 만약 database를 생성하지 않았다면 생성 후에 써주어야 나중에 커서로 연결할 때 편합니다.

     

    기본으로는 root 계정은 3306 포트로 설정되기 때문에 port를 안 쓰기도 합니다. 포트가 다르다면 써주어야 합니다.

    현재까지는 연결만 해놓은 것이고 이제 sql쿼리를 직접 작성해 데이터베이스를 건드려보겠습니다.

    try:
        # 커서 생성
        with connection.cursor() as cursor:
            # SQL 쿼리 실행
            sql = "SELECT * FROM users"
            cursor.execute(sql)
            result = cursor.fetchall()
    
            # 결과 출력
            for row in result:
                print(row)
    finally:
        # 연결 종료
        connection.close()

     

    cursor()라는 메쏘드를이용해 데이터베이스에 접근하고 해당 데이터베이스에서 execute()를 이용해 쿼리문을 실행합니다. 쿼리문을 다 끝냈다면 fetchall()로 쿼리문 실행 변경사항을 파이썬으로 불러들입니다.

    conncection.close()를 통해 데이터베이스와의 연결을 끊습니다.

     

    PyMySQL을 사용할 때 주의할 점

    PyMySQL은 매우 유용한 라이브러리이지만, 다음과 같은 점을 염두에 두어야 합니다:

    • 성능: 순수 파이썬으로 구현되었기 때문에 C 기반의 라이브러리보다 성능이 떨어질 수 있습니다. 성능이 중요한 애플리케이션에서는 다른 라이브러리(C API를 사용하는 라이브러리)를 고려해볼 수 있습니다.
    • 커넥션 관리: 데이터베이스 연결은 제한된 리소스이므로, 사용 후 반드시 연결을 종료해야 합니다. 이를 위해 with 문을 사용한 컨텍스트 매니저를 적극 활용하는 것이 좋습니다. 쥬피터나 vscode를 끄더라도 명령으로 끊지 않으면 백그라운드에서 계속 메모리를 잡아먹게 됩니다. 모든 작업이 끝났다면 close()로 마무리하는 습관을 들이는게 좋습니다.

    마치며

    데이터베이스 하나만 작업하고 싶다면 MySQL에서 제공하는 Workbench를 사용하면 됩니다. 하지만, 빅데이터분석을 비롯해 인공지능이나여타 다른 작업을 하게 되면 sql을 파이썬 내에서 다뤄야 하는데 PyMySQL을 사용하면 Mysql의 기본기능을 다 제공하니 손쉽게 데이터베이스를 다룰 수 있을겁니다.

    댓글

    Designed by JB FACTORY

    ....