[Python][MariaDB] python mariadb 연동
이전에는 MySQL Python package를 사용하여 MariaDB를 연결하였지만, 2020년 6월에 MairaDB에서 Connector/Python 첫번째 버전을 만들었다. (예전 자료 바로가기)
MariaDB Server, MariaDB MaxScale and MariaDB SkySQL를 포함한 MairaDB Platform안에 저장된 데이터를 다룰 수 있다. 아래 예제에서 검색, 업데이트, 삽입을 위해 MairaDB 플랫폼에 연결하는 방법에 대해서 알아보자.
1. MariaDB Server 연결
# Module Imports
import mariadb
import sys
# Connect to MariaDB Platform
try:
conn = mariadb.connect(
user="log",
password="log1234",
host="localhost",
port=3306,
database="log_db"
)
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
# Get Cursor
cur = conn.cursor()
2. 데이터 가져오기
사전에 MariaDB에 아래와 같이 데이터를 저장해 두었다
1) 모든 데이터 가져오기
# selectall = "SELECT * from employee"
select_all_query = "SELECT firstname, lastname from employee"
cur.execute( select_all_query )
# query 결과를 list 형으로 가져옴.
resultset = cur.fetchall()
for firstname, lastname in resultset:
print(f"First name: {firstname}, Last name: {lastname}")
First name: kim, Last name: log
First name: park, Last name: happy
2) 특정 조건의 데이터 가져오기
some_name = "kim"
select_where_query = "SELECT firstname, lastname from employee WHERE firstname=?"
cur.execute( select_where_query,(some_name,))
resultset = cur.fetchall()
for firstname, lastname in resultset:
print(f"First name: {firstname}, Last name: {lastname}")
First name: kim, Last name: log
3. 데이터 추가하기
firstname = "joy"
lastname = "lee"
insert_query = "INSERT INTO employee (firstname,lastname) VALUES (?, ?)"
try:
cur.execute( insert_query, (firstname, lastname))
except mariadb.Error as e:
print(f"Error: {e}")
실행 결과는 아래와 같다.
기본적 MariaDB connector/Python은 자동 커밋으로 설정되어 있다.
만약 수동으로 commit
과 rollback
을 관리하고 싶다면, conn.autocommit = False
옵션을 적용하여 비활성화 한다.
auto-commit 비활성화 옵션이 적용되면, 수동으로 commit
과 rollback
을 관리할 수 있다.
conn.commit()
행을 insert하는 동안 자동 증가 값과 마찬가지로 생성될 때, 마지막으로 삽입된 행의 기본 키를 찾을수 있다.
cur.lastrowid
4. 예외처리
try-except 문을 통해 mariadb.Error 예외를 반환한다.
try:
cur.execute( "Some MariaDB query")
except mariadb.Error as e:
print(f"Error: {e}")
DB 작업을 마친 후에는 사용하지 않는 연결을 열어 리소스를 낭비하지 않기 위해 연결을 닫아야 한다.
# 연결 닫기
conn.close ()
5. 스크립트 모아보기
# Module 추가
import mariadb
import sys
# MariaDB 연결
try:
conn = mariadb.connect(
user="log",
password="log1234",
host="localhost",
port=3306,
database="log_db"
)
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
# Cursor 가져오기
cur = conn.cursor()
## 모든 데이터 조회
# selectall = "SELECT * from employee"
select_all_query = "SELECT firstname, lastname from employee"
cur.execute( select_all_query )
# query 결과를 list 형으로 가져옴.
resultset = cur.fetchall()
print('-------- select all data ----------')
for firstname, lastname in resultset:
print(f"First name: {firstname}, Last name: {lastname}")
## 특정 조건 데이터 조회
some_name = "kim"
select_where_query = "SELECT firstname, lastname from employee WHERE firstname=?"
cur.execute( select_where_query,(some_name,))
resultset = cur.fetchall()
print('-------- select kim data ----------')
for firstname, lastname in resultset:
print(f"First name: {firstname}, Last name: {lastname}")
# 데이터 추가
lastname = "joy"
firstname= "lee"
insert_query = "INSERT INTO employee (firstname,lastname) VALUES (?, ?)"
try:
cur.execute( insert_query, (firstname, lastname))
except mariadb.Error as e:
print(f"Error: {e}")
# 연결 닫기
conn.close ()
-------- select all data ----------
First name: kim, Last name: log
First name: park, Last name: happy
-------- select kim data ----------
First name: kim, Last name: log
참고 사이트 MariaDB Blog
댓글남기기