반응형

2020/04/04 - [M.L/AWS(Amazone Web Service)] - [AWS/RDS] RDS와 Python 연결하기(3) - Mysql Workbench와 aws mysql DB 연동

 

[AWS/RDS] RDS와 Python 연결하기(3) - Mysql Workbench와 aws mysql DB 연동

2020/04/04 - [Python 3/AWS(Amazone Web Service)] - [AWS/RDS] RDS와 Python 연결하기(2) - aws에 Mysql DB(데이터베이스)만들기 [AWS/RDS] RDS와 Python 연결하기(2) - aws에 Mysql DB(데이터베이스)만들기 202..

leo-bb.tistory.com

벌써 4번째 글까지 이어졌군요!

앞에 이어진 글을 실수 없이 따라오셨다면 지금부터 드디어 python을 통해 MySql DB를 운영하실 수 있습니다!

오늘도 window사용자를 기준으로합니다!

3. pymysql을 이용해 python script로 DB 운영

 workbench를 통해 AWS 클라우드에 생성된 데이터베이스를 연결해두었습니다.

이제 Python에서 운영하기 위해 "Pymysql" 라이브러리를 설치해줍니다.

설치방법은 3가지가 있습니다.

  • pip install pymysql
  • conda install pymysql
  • git-repo에서 직접 clone

편하신 방법으로 pymysql을 받아주시고 임포트 해봅니다.

import sys
import os
import requests  #필수
import base64 #필수
import json 
import logging
import time 
import pymysql #필수
import pandas as pd
import csv

 

python 내부에서 aws server mysql db에 접근하려면 총 3가지가 필요합니다.

  1. host name
  2. port num
  3. user name & password
#RDS info
host = "rds endpoint" #mysql workbench에 연결할 때 썼던 그 aws엔드포인트입니다.
port = 3306 #포트번호는 손대지않으셨다면 3306 고정
username = "your username" #rds 만드실 때 입력하셨던 이름
database = "database, you want to connect" #RDS DB내에서 연결하고싶은 데이터베이스 이름입니다.
#workbench연결만 하신분들은 workbench에 들어가서 연결해둔 aws rds에 접속하여 CREATE DATABASE name 하시면 생성됩니다.
password = "your password"

#Authorization Client Credentials Flow
def main():
    #get headers
    headers = get_headers(client_id, client_secret)
    
    #call RDS
    conn, cursor = connect_RDS(host, port, username, password, database)
    

if __name__ == "__main__":
    main()

저처럼 사전에 선언해두어도 되고, main() 실행 이전에 선언되도록 if문 안에 넣어두셔도 됩니다.

 

main function에서 connect_RDS라는 함수를 통해 DB와 연결합니다.

 

def connect_RDS(host, port, username, password, database):
    try :
        conn = pymysql.connect(host, user = username, passwd = password, db = database, 
        	port = port, use_unicode = True, charset = 'utf8')
        cursor = conn.cursor()
    
    except :
        logging.error("RDS에 연결되지 않았습니다.")
        sys.exit(1)

    return conn, cursor

Connect_RDS는 conn, cursor 2개의 객체를 return 해줍니다. 

conn = pymysql.connect()는 다양한 인자를 요구하지만 우리는 사전에 이미 선언하여 변수로 넣어줬으니 그대로 입력하시면 됩니다.( 여기서 charset = 'utf-8'로 해둬야 혹시나 한글을 저장, 불러올 경우 깨지지 않습니다. )

 

cursor는 db와 sql문장을 주고받는 역할을 하게 됩니다.  

 

query = """
        insert into artists (id, name, followers, popularity, url, image_url) 
        values('{0}', '{1}', '{2}', '{3}', '{4}', '{5}')
        on duplicate key update id = '{0}', name = '{1}', followers = '{2}', popularity = '{3}', url = '{4}', image_url = '{5}'  
        """.format(
            data['id'], 
            data['name'], 
            data['followers'], 
            data['popularity'], 
            data['url'], 
            data['img'])
    
    cursor.execute(query)
    conn.commit()

<cursor Excute 예시>

 

여기까지 RDS에 DB를 생성하고, python내부에서 연결하여 사용하는 방법을 알아보았습니다.

 

 

반응형
복사했습니다!