본문 바로가기
programming/Python

파이썬 mysql 연결과 insert 입력 select 조회하기

by 개코 - 개발과 코딩 2021. 12. 25.

파이썬에서 mysql 을 연결하는 것으로 데이터를 보관하는 작업을 수월하게 할 수 있다. 물론 파일이나 엑셀 등을 사용할 수도 있지만 추가적인 작업들이 발생하기도 한다. 데이터만 조작하는 것이라면 파일보다는 데이터베이스가 수월할 따름이다. 그렇기에 select 와 insert 를 파이썬으로 조작하는 것은 너무도 유용하다.

파이썬 mysql 연결과 insert 입력 select 조회하기

파이썬을 가지고 프로그램을 만들다 보면 데이터를 저장할 필요가 생긴다.

엑셀도 좋고 텍스트도 좋지만 데이터베이스에 넣는 것이 수월하기만 하다.

귀찮지만 검색을 하면 코드는 다 있다.

많이 사용하는 mysql 에 파이썬으로 연결하여 데이터를 넣어보도록 한다.

모듈설치 pymysql

mysql 을 사용하기 위해 별도의 모듈이 필요하다.

pymysql 은 파이썬에서 mysql 에 연결하여 CRUD를 할 수 있도록 해 준다.

먼저 pip를 이용한 모듈 설치가 필요하다.

pymysql 을 사용을 위해 import 를 해 주면 된다.

# mysql 연동모듈 설치 ( cmd창 또는 터미널 창에서 사용 )
pip install pymysql

# 파이썬 mysql 연동 모듈
import pymysql

연동하기

설치가 정상적으로 되었다면 import 를 하고 db 정보를 설정하고 쿼리를 설정하면 된다.

이 때 mysql 에 연결하는 커넥션 객체가 생성된다.

커넥션 객체는 파이썬과 mysql 을 연결하여 파이썬이 데이터베이스 작업을 할 수 있도록 해준다.

conn = pymysql.connect(host='localhost',
                       user='root',
                       password='dkaghdkagh',
                       db='myhome',
                       charset='utf8')

쿼리 실행

연결까지 하여 커넥션 객체가 생성되었다면 입력쿼리와 조회쿼리를 실행하면 된다.

참고로 파이썬 구문에서 with 명령어는 객체가 생성되었을 때만 실행되며

코드의 실행이 완료되면 모든 객체를 해제한다.

쉽게 말해 별도의 close() 작업이나 dispose() 같은 작업을 할 필요가 없다.

vSqlINSERT = "INSERT INTO tb_board (type) VALUES (%s)"
vSqlSELECT = "SELECT * FROM tb_board"

print("----- INSERT ----------")
            
cur.execute(vSqlINSERT, ('PYTHON'))
conn.commit()

print("----- SELECT fetch all ----------")

cur.execute(vSqlSELECT)
result = cur.fetchall()
for data in result:
print(data)

print("----- SELECT fetch one ----------")

cur.execute(vSqlSELECT)
result = cur.fetchone()
for data in result:
print(data)

입력을 하고 조회하여 확인

위의 코드를 쪼개서 필요한 대로 사용하면 된다.

이제는 한꺼번에 처리를 하도록 한다.

입력을 한 후 입력이 잘 되었는지 확인할 필요가 있다.

그렇기에 하나의 코드에 모든 작업을 넣어 두었다.

먼저 insert 작업으로 데이터를 입력한다.

select 하여 전체 데이터를 확인한다.

다시 select 하여 하나의 자료만 확인한다.

print("----------")

import pymysql

conn = pymysql.connect(host='localhost',
                       user='root',
                       password='dkaghdkagh',
                       db='myhome',
                       charset='utf8')

''' INSERT & SELECT '''
vSqlINSERT = "INSERT INTO tb_board (type) VALUES (%s)"
vSqlSELECT = "SELECT * FROM tb_board"

with conn:
    with conn.cursor() as cur:
        
        
        print("----- INSERT ----------")
            
        cur.execute(vSqlINSERT, ('PYTHON'))
        conn.commit()
        
        print("----- SELECT fetch all ----------")
        
        cur.execute(vSqlSELECT)
        result = cur.fetchall()
        for data in result:
            print(data)
            
        print("----- SELECT fetch one ----------")
        
        cur.execute(vSqlSELECT)
        result = cur.fetchone()
        for data in result:
            print(data)

print("----------")

결과화면을 보자.

mysql 에 데이터를 입력한 후 데이터를 조회하고 있다.

조회는 2가지로 하나는 다른 값은 모든 값을 조회하고 다른 하나는 하나만 조회한다.

쿼리는 동일하다.

반응형

댓글