[파이썬] 파이썬에서 MySQL 데이터베이스 연결하는 방법

 

파이썬에서 MySQL을 연결하기 위해서는 MySQL과의 연결을 하는 라이브러리를 설치해야 합니다. 파이썬에서 MySQL에 연결하기 위한 라이브러리 pymysqlmysql-connector가 있습니다. pymysql은 MySQL의 공식 라이브러리가 아닌, 서드파티 라이브러리로, 파이썬 커뮤니티가 개발하고 유지보수 하고 있습니다.생각보다 많은 사용자가 pymysql 라이프러리를 활용해 MySQL 연결에 사용하고 있습니다. mysql-connector는 MySQL 개발팀에서 직접 제공하는 공식 라이브러리로, MySQL과의 호환성과 안정성에 있어 보장이 강합니다. 따라서 저는 이번에 mysql-connectory를 활용해 MySQL 데이터베이스와 연동하는 방법에 대해서 알아보겠습니다. 

 


1. MySQL Connector 라이브러리 설치하기 
activate 가상환경이름
pip install mysql-connector-python

 

우선 아나콘다3를 이용해 가상환경을 만들어서 사용중이라면 Anaconda Prompt에서 가상환경을 활성화 시켜주는 명령어 activate 가상환경명 을 입력해 가상환경에 들어가 pip install mysql-connector-python을 입력해 MySQL 라이브러리를 설치합니다. 

 

또는

 

 

Anaconda Navigator 프로그램에서 Environments에 만들어진 Mysql-connector-python 라이브러리를 설치할 가상환경을 선택해주고 오른쪽 화면에 ALL 또는 Not installed를 선택하고 옆에 mysql-connector-python 라이브러리를 검색해 체크박스를 선택 오른쪽 하단의 Apply 버튼을 눌러 설치가 가능합니다. 

 


2. 데이터베이스 연결하기 
import mysql.connector

# MySQL 데이터베이스 연결
try:
    connection = mysql.connector.connect(
        host="localhost",  # MySQL 서버 주소
        user="your_username",  # 사용자 이름
        password="your_password",  # 비밀번호
        database="your_database"  # 데이터베이스 이름
    )

    if connection.is_connected():
        print("MySQL 데이터베이스에 성공적으로 연결되었습니다.")

except mysql.connector.Error as e:
    print(f"연결 실패: {e}")

finally:
    if connection.is_connected():
        connection.close()
        print("MySQL 연결이 종료되었습니다.")

 

  • host : 데이터베이스가 위치한 서버 주소를 입력합니다. ex) "127.0.0.1" 
    로컬 테스트에서는 localhost 사용해도 상관없습니다.
  • user : 데이터베이스에 접근할 MySQL 사용자 계정 ex)"root" or " admin" 등
  • password : 계정의 비밀번호 입력 
  • database : 연결하고자 하는 데이터베이스 이름 

 

연결이 성공적으로 완료되면 MySQL 데이터베이스에 성공적으로 연결되었습니다. 묵구가 출력됩니다. 


3. 데이터베이스에서 SELECT 쿼리 실행하기 

 

import mysql.connector

# MySQL 데이터베이스 연결

try:
    connection = mysql.connector.connect(
        host="localhost",
        user="your_username",
        password="your_password",
        database="your_database"
    )

    cursor = connection.cursor()
    cursor.execute("SELECT * FROM table_name")  # 원하는 SQL 쿼리
    result = cursor.fetchall()

    for row in result:
        print(row)

except mysql.connector.Error as e:
    print(f"쿼리 실행 오류: {e}")

finally:
    if connection.is_connected():
        cursor.close()
        connection.close()
        print("MySQL 연결이 종료되었습니다.")

 

  • cursor() : 데이터베이스 작업을 위한 커서를 생성합니다.
  • execute()  : SQL 쿼리를 실행합니다.
  • fetchall()  : 쿼리 결과를 모두 가져와 리스트로 반환합니다. 

데이터베이스 연결 밑에 데이터베이스 작업을 위한 cursor를 생성합니다. cursor() 객체는 SQL쿼리를 실행하고 결과를 관리할 수 있게 도와줍니다. mysql-connector나 pymysql 같은 데이터베이스 연결 라이브러리에서 cursor() 메서드를 호출하여 커서를 생성한 후, 이를 통해서 SQL 명령어를 데이터베이스에 전달하고 결과를 받을 수 있습니다. cursor 객체는 execute()메서드를 사용하여 SQL 쿼리를 데이터베이스에 실행합니다. 

 

 

저는 제가 가지고 있는 데이터베이스에 cou_category 라는 테이블을 만들고 테이블의 내용을 한번 불러와봤습니다. 

 


4. INSERT, UPDATE, DELETE 쿼리 실행하기 

try:
    connection = mysql.connector.connect(
        host="localhost",
        user="your_username",
        password="your_password",
        database="your_database"
    )

    cursor = connection.cursor()
    sql = "INSERT INTO table_name (column1, column2) VALUES (%s, %s)"
    values = ("value1", "value2")
    cursor.execute(sql, values)
    connection.commit()  # 변경 사항을 저장합니다.

    print(f"{cursor.rowcount}개의 행이 삽입되었습니다.")

except mysql.connector.Error as e:
    print(f"쿼리 실행 오류: {e}")

finally:
    if connection.is_connected():
        cursor.close()
        connection.close()
        print("MySQL 연결이 종료되었습니다.")

 

  • commit() : 데이터베이스에 변경 사항을 저장합니다. 
  • rowcount: 영향을 받은 행 수를 반환합니다. 

commit()은 데이터베이스에 변화가 있는 쿼리( INSERT, DELETE, UPDATE)를 실행할 때 commit()을 호출해야 실제로 데이터베스에 적용됩니다. 

 

 

Designed by JB FACTORY