본문 바로가기
DBMS

python으로 mariadb 접속 및 처리하기 - pyodbc

by developer's warehouse 2023. 12. 19.

지난 시간에 unixodbc를 이용해서 mariadb에 접속하고 테스트를 해봤습니다. odbc는 표준이 있어서, odbc에 맞게 프로그램을 작성하면 여러 db에 거의 동일한 코드로 처리가 가능합니다. pyodbc를 이용해서 python에서 odbc프로그램으로 db 접속 예제 프로그램을 만들어 보도록 하겠습니다.

python으로 mariadb 접속 및 처리하기 - pyodbc 썸네일

PyODBC를 이용하여 MariaDB에 접속하고, 테이블을 생성하고, DML(Data Manipulation Language)을 수행하는 간단한 Python 코드를 생성하고 테스트해보도록 하겠습니다.

 

1. pyodbc 설치

만약 pyodbc 라이브러리가 설치되어있지 않았다면, 설치해야합니다.

다음의 pip 명령을 이용해서 설치합니다.

:~/mariadbTest$ pip install pyodbc
Defaulting to user installation because normal site-packages is not writeable
Collecting pyodbc
  Downloading pyodbc-5.0.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (334 kB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 334.8/334.8 KB 5.4 MB/s eta 0:00:00
Installing collected packages: pyodbc
Successfully installed pyodbc-5.0.1

 

2. mariadb 접속 예제 코드

mariadb에 접속해서 간단히 테이블을 만들고 삽입 후에 결과를 반환받는 코드는 다음과 같습니다.

아래 코드에서 주의할 점은 connect 부분입니다.

DRIVER의 경우 /etc/odbcinst.ini 에 기록된 ODBC 이름을 적어야 하고, DATABASE, USER, PASSWORD는 본인이 설정한 mariadb에 맞게 설정해야 합니다.

import pyodbc

# MariaDB에 연결
conn = pyodbc.connect('DRIVER={MariaDB ODBC 3.1 Driver};SERVER=localhost;DATABASE=testdb;USER=testuser;PASSWORD=testpass;')

# 커서 생성
cursor = conn.cursor()

# 테이블 생성
cursor.execute('''
    CREATE TABLE Employees (
        ID INT PRIMARY KEY NOT NULL,
        NAME TEXT NOT NULL,
        AGE INT NOT NULL,
        ADDRESS CHAR(50),
        SALARY REAL);
''')

# 데이터 삽입
cursor.execute("INSERT INTO Employees (ID,NAME,AGE,ADDRESS,SALARY) VALUES (1, 'Paul', 32, 'California', 20000.00 )");

# 변경사항 저장
conn.commit()

# 데이터 조회
cursor.execute("SELECT * FROM Employees")

# 결과 출력
rows = cursor.fetchall()
for row in rows:
    print(row)

# 연결 종료
conn.close()

 

예를들어, odbcinst.ini에 다음과 같이 설정된 경우 "MariaDB"를 넣어야 합니다. 

[MariaDB]
Description=MariaDB Connector/ODBC
Driver=/usr/lib64/libmaodbc.so

 

오늘은 mariadb에 pyodbc를 이용해서 접속하고 간단히 테스트하는 것을 확인해 보았습니다.

요약하면, pyodbc 라이브러리 설치 후에 connection 문자열을 잘 지정한 후 접속합니다. 접속한 connection에서 cursor를 생성해서 DML을 수행하면 쉽게 사용하실 수 있습니다.

facebook twitter kakaoTalk kakaostory naver band shareLink