MySQL - Python with MySQL

김혜령·2024년 2월 19일
0

MySQL

목록 보기
9/14
post-thumbnail

Python으로 MySQL 접속 후 사용하는 방법

# MySQL Driver 설치
pip install mysql-connector-python
# 설치확인
import mysql.connector

# MySQL 접속
mydb = mysql.connector.connect(
	host = "<hostname>", #AWS RDS 연결시 엔드포인트 
    port = <port>, #local 연결시 생략가능
    user = "<username>",
    password ="<password>"
    database ="<databasename>" #특정 db접속 시 사용(생략가능)
)

# 연결 종료
mydb.close()

Query 실행

import mysql.connector

mydb = mysql.connector.connect(
	host = "<hostname>", #AWS RDS 연결시 엔드포인트 
    port = <port>, #local 연결시 생략가능
    user = "<username>",
    password ="<password>"
    database ="<databasename>" #특정 db접속 시 사용(생략가능)
)

# 커서 생성
mycursor = mydb.cursor()
# 쿼리 실행
mycursor.execute("<query>")

mydb.close()

SQL File 실행

import mysql.connector

mydb = mysql.connector.connect(
	host = "<hostname>", #AWS RDS 연결시 엔드포인트 
    port = <port>, #local 연결시 생략가능
    user = "<username>",
    password ="<password>"
    database ="<databasename>" #특정 db접속 시 사용(생략가능)
)

mycursor = mydb.cursor()

# sql 쿼리 생성
sql = open("<filename>.sql").read()
# 커서를 통해 sql 실행
mycursor.execute(sql)

mydb.close()
  • SQL File 내에 Query가 여러개 존재하는 경우
    multi=True 옵션 추가
mycursur.execute(sql, multi=True)

CSV에 있는 데이터를 Python으로 INSERT

  • csv파일을 pandas로 읽어오기
    *csv한글이 깨지는 경우, encoding값을 euc-kr로 설정
    df = pd.read_csv("경로/파일명.csv", encoding='euc-kr')
import pandas as pd
df = pd.read_csv("경로/파일명.csv")
df.head()
# MySQL 접속
mydb = mysql.connector.connect(
	host = "<hostname>", #AWS RDS 연결시 엔드포인트 
    port = <port>, #local 연결시 생략가능
    user = "<username>",
    password ="<password>"
    database ="<databasename>" #특정 db접속 시 사용(생략가능)
)

# 커서 생성
mycursor = mydb.cursor()
  • 데이터 insert문 만들기
sql = "insert into table_name values (%s, %s, ..., %s)"

#commit()은 database에 적용하기 위한 명령
for i, row in df.iterrows():
	mycursor.execute(sql, tuple(row))
    print(tuple(row))
    mydb.commit()

Fetch All(데이터 조회)

Query 실행 결과를 조회할 때 데이터를 가져오는 경우

  • 읽어올 데이터 양이 많은 경우 cursor 생성 시 buffer 설정(buffered=True 옵션 추가)
mycursor = mydb.cursor(buffered=True)

mycursor.execute("<query>")

result = mycursor.fetchall()
for result_iterator in result:
	print(result_iterator)
  • 조회된 결과를 Pandas로 변환해서 확인
import pandas as pd

df = pd.DataFrame(result)
df.head() #상위결과:head/하위결과:tail

0개의 댓글