MySQL

MySQL과 파이썬 연동하기

728x90

파이썬과 MySQL을 연동하는 방법.

 

1. MySQL에 접속을 위한 유저를 하나 만든다.

여기서 admin계정은 사용하지 않고 특정 DB에서만 접속할 수 있는 계정을 만듦.

 

#my_test 데이터베이스에만 접속이 가능한 유저 생성

create user 'node_user' @ '%' identified by 'node1234test';

 

# my_test DB를 관리할 권한 설정

grant all on my_test.*to'node_user' @ '%'

 

2. 이용순서

 1) install MySQL connector module

pip install mysql-connector-python

 2) import mysql.connector (VScode 사용)

 

 3) use the connect() method

 

 4) use the consor() method

 

 5) use the execute() method

 

 6) Extract result using fatchall()

cursor.fetchall() or fatchone() or fatch many
-- 상황에 맞게 사용

 7) close cursor and connection objects

cursor.close() and connection.close()

 

MySQL 과 Python의 connect 한다고 표현 // 파이썬에서 입력하면 MySQL에 입력이 됨. // 홈페이지에서 입력한 정보가 DB에 입력되는것.

 

 

커넥션 코드 샘플 

 try:
            #1. 커넥터로부터 커넥션을 받는다.
            connection = mysql.connector.connect(
                host = 'database-1.cqduiaqdroex.us-east-2.rds.amazonaws.com',
                database = 'yhdb',
                user = 'streamlit',
                password = 'yh1234'
        
            )

            if connection.is_connected() : 
                print('연결될때')
                db_info = connection.get_server_info()
                print('MySQL server virsion : ', db_info)

                #2. 커서를 가져온다
                cursor = connection.cursor()

                #3. 우리가 원하는거 실행 가능
                cursor.execute('select database();')
               
               # 여기에 insert select 업데이트 등을 함.

                #4. 실행 후 커서에서 결과를 빼냄
                record = cursor.fetchone()
                print('Connected to db : ', record)
                
        except Error as e:
            print('디비 관련 에러 발생',e)
        
        finally :
            #5. 모든 데이터 베이스 실행 명령을 끝냈으면 커서와 커넥션을 모두 닫아줌.
            cursor.close()
            connection.close()
            print('MySQL 커넥션 종료')

 

 

Insert row into MySQL from Python

  1. SQL문 작성
    insert into mysql_table(컬럼1, 컬럼2..) values(value1, value2)
  2. Connection으로 부터 cursor가져오기
     connection.cursor()
  3. 쿼리실행
    cursor.execute()
  4. 커밋 실행하여 인서트 반영
    commit()
  5. 몇개의 행이 적용되었는지 확인
    cursor.rowcount

변수로 처리하는 방법 - 샘플코드

  cursor = connection.cursor()

  query - """insert into laptop(id, name, price, purchase_date)

                values(%s, %s, %s, %s)"""

  *record = (id, name, price, purchase_date)

  cursor.execute(query, record)

  connection.commit()

 

여러행 넣기

  * record = [(id, name, price, purchase_date),(id, name, price, purchase_date),(id, name, price, purchase_date)]

  리스트로 넣는다.

 

 

MySQL 데이터 파이썬으로 추출하기

 

import streamlit as st
import mysql.connector
from mysql.connector import Error
from datetime import datetime, date, time
 
def main():
    if st. button('저장'):
        try:
            #1. 커넥터로부터 커넥션을 받는다.
            connection = mysql.connector.connect(
                host = 'database-1.cqduiaqdroex.us-east-2.rds.amazonaws.com',
                database = 'yhdb',
                user = 'streamlit',
                password = 'yh1234'
        
            )
 
            if connection.is_connected() : 
                print('연결될떄')
                db_info = connection.get_server_info()
                print('MySQL server virsion : ', db_info)
 
                #2. 커서를 가져온다
                cursor = connection.cursor()
 
                #3. 우리가 원하는거 실행 가능

                query = '''
                        select * from books;
                        '''   
                cursor.execute(query)
                # connection.commit() # 셀렉트에는 커밋이 없다.
 

                record = cursor.fetchall()

                
                for data in record:
                    print(data)
 
 
 
 
        except Error as e:
            print('디비 관련 에러 발생',e)
            
        
        finally :
            #5. 모든 데이터 베이스 실행 명령을 끝냈으면 커서와 커넥션을 모두 닫아줌.
            cursor.close()
            connection.close()
            print('MySQL 커넥션 종료')
 
 
 
 
if __name__ == '__main__':
    print(__name__)
    main()
728x90

'MySQL' 카테고리의 다른 글

데이터 베이스의 본질  (0) 2021.03.30
MySQL - join (+ case 조건문)  (0) 2021.03.17
MySQL 기본문법  (0) 2021.03.16
Workbench 를 통해, AWS RDS에 접속환경 설정하는 방법  (0) 2021.03.16