Study_note(zb_data)/SQL

์Šคํ„ฐ๋”” ๋…ธํŠธ (Python with MySQL)

KloudHyun 2023. 8. 30. 17:54

๐Ÿ“Œ Python with MySQL

- mysql.connector library๋ฅผ ์„ค์น˜ ๋ฐ import

pip install mysql-connector-python

 

import mysql.connector

๐Ÿ“Œ mysql ์ ‘์†ํ•˜๊ธฐ

- ๋กœ์ปฌ ํ˜ธ์ŠคํŠธ๋กœ ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ

import mysql.connector
mydb = mysql.connector.connect(
    host = "localhost"
    user = "root"
    password = "******"
)

- AWS ํ™˜๊ฒฝ์œผ๋กœ ์ ‘์†ํ•˜๋Š” ๊ฒฝ์šฐ

import mysql.connector
remote = mysql.connector.connect(
    host = "end_point"
    port = port_number
    user = "admin"
    password = "******"
)

- ์‚ฌ์šฉ์„ ๋‹ค ํ–ˆ๋‹ค๋ฉด connect๋ฅผ ์ข…๋ฃŒ

mydb.close()

๐Ÿ“Œ connect to database

- ํŠน์ • ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ๋ฐ”๋กœ ์ ‘์†ํ•˜๊ธฐ

- ๊ธฐ์กด connect ๋ฌธ์— database ํ•ญ๋ชฉ์ด ์ถ”๊ฐ€๋œ๋‹ค.

import mysql.connector
mydb = mysql.connector.connect(
    host = "localhost"
    user = "root"
    password = "******"
    database = "db_name"
)

๐Ÿ“Œ execute๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋‚ ๋ ค๋ณด์ž

- execute๋กœ sql์—์„œ ์‚ฌ์šฉํ•˜๋Š” ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

remote = mysql.connector.connect(
    host = "host_name"
    port = "port_number"
    user = "admin"
    password = "******"
    database = "db_name"
)

cur = remote.cursor()
cur.execute("query")

๐Ÿงท ์˜ˆ์‹œ

cur = remote.cursor()
cur.execute("create table sql_file (id int, filename varchar(16))")

query๋ฅผ ๋‚ ๋ฆฌ๊ณ , sql๋กœ ์ ‘์†ํ•˜๋ฉด ํ™•์ธ ๊ฐ€๋Šฅ

cur = remote.cursor()
sql = open("test03.sql").read()
cur.execute(sql)

ํ•ด๋‹น sql ํŒŒ์ผ์„ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ“Œ ๋ณต์ˆ˜ ์ฟผ๋ฆฌ ์‚ฌ์šฉํ•˜๊ธฐ

- execute ๋ฌธ์— ์ฟผ๋ฆฌ์™€ ํ•จ๊ป˜ multi=True์˜ต์…˜์„ ์ค€๋‹ค.

cur = remote.cursor()
sql = open("test04.sql").read()
for result_iterator in cur.execute(sql, multi=True): #multi=True ๊ฐ’์„ ์ค€๋‹ค
    if result_iterator.with_rows:
        print(result_iterator.fetchall())
    else:
        print(result_iterator.statement)
remote.commit()

๋ณต์ˆ˜์˜ Query๊ฐ€ ์ž‘์„ฑ๋˜์–ด ์žˆ๋Š” ํŒŒ์ผ

๐Ÿ“Œ fetchall()

- ๋ถˆ๋Ÿฌ์˜ฌ ๋ฐ์ดํ„ฐ๊ฐ€ ๋งŽ์„ ๋•Œ, buffered = True ์˜ต์…˜์„ ์ค„ ์ˆ˜ ์žˆ๋‹ค

- fetchall() ํ•จ์ˆ˜๋กœ ์ฟผ๋ฆฌ์— ๋Œ€ํ•œ ์ถœ๋ ฅ ๊ฐ’์„ return ๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค (๋‹ค์–‘ํ•œ ๊ฒƒ์„ ํ•  ์ˆ˜ ์žˆ์Œ!)

cur = remote.cursor(buffered=True)
cur.execute("query")
result = cur.fetchall()
result

๋ณต์ˆ˜์˜ tuple๋กœ ์ด๋ฃจ์–ด์ง„ list ํ˜•ํƒœ์˜ ๊ฐ’์„ ๋ฐ˜ํ™˜ ๋ฐ›๋Š”๋‹ค

for result_iterator in result:
	print(result_iterator)

for๋ฌธ์„ ํ†ตํ•ด ํŠœํ”Œ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜ ๋ฐ›๋Š”๋‹ค.

๐Ÿงท pandas ํ˜•ํƒœ๋กœ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ 

import pandas as pd
df = pd.DataFrame(result)
df.head()

Pandas DataFrame ํ˜•ํƒœ๋กœ ๊ฒฐ๊ณผ ๊ฐ’์„ ๋ถˆ๋Ÿฌ์˜ฌ ์ˆ˜ ์žˆ๋‹ค.