Published 2020. 4. 6. 22:37
반응형
벌써 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가지가 필요합니다.
- host name
- port num
- 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내부에서 연결하여 사용하는 방법을 알아보았습니다.
반응형