Python with MySQL_1

์ •ํ•œ๋ณ„ยท2024๋…„ 6์›” 12์ผ
0

๐Ÿ—‚๏ธ ์‹ค์Šตํ™˜๊ฒฝ ๋งŒ๋“ค๊ธฐ

Jupyter Notebook ์‹คํ–‰

VSCode ํ˜น์€ Web Browser ๋ฅผ ํ†ตํ•ด ์‹คํ–‰ํ•˜๊ณ , ds_study ํ™˜๊ฒฝ์—์„œ ์ž‘์—…ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰ ์œ„์น˜

Jupyter notebook ๊ณผ mysql ์€ ๋ชจ๋‘ sql_ws ํด๋”์—์„œ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

1. ๋ฐ์ดํ„ฐ ์‚ญ์ œ

mysqldump --set-gtid-purged=OFF -h"์—”๋“œ ํฌ์ธํŠธ" -P 3306 -u
admin -p zerobase police_station >backup_police.sql

use zerobase;

delete from police_station;

โ—python.ipyb ํŒŒ์ผ์„ ๋งŒ๋“  ํ›„ ์˜ค๋ฅธ์ชฝ ์ƒ๋‹จ์— ds_study๋ฅผ ์„ ํƒํ•œ๋‹ค.
ds_study๊ฐ€ ์—†์„ ์‹œ terminal์— conda create -n ds_study
python=3.8 ์„ ์ž…๋ ฅํ•ด์ค€๋‹ค

์—ฌ๊ธฐ์„œ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ anaconda๋ฅผ ์„ค์น˜ํ•ด์ค€๋‹ค
๋˜ ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ ํ™˜๊ฒฝ๋ณ€์ˆ˜ ์„ค์ • ํ›„ anaconda์—์„œ
conda create -n ds_study python=3.8๋ฅผ ์ž…๋ ฅ ํ›„
scode์—์„œ ์„ค์ •์„ ํ•ด์ฃผ์—ˆ๋‹ค.

๐Ÿ—‚๏ธ Python with MySQL

Python ์œผ๋กœ MySQL ์ ‘์† ํ›„ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•

1. Python ์—์„œ MySQL ์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋จผ์ € MySQL Driver ๋ฅผ ์„ค์น˜ํ•œ๋‹ค.

pip install mysql-connector-python
import mysql.connector -์„ค์น˜ ํ™•์ธ

๐Ÿ“‚MySQL ์— ์ ‘์†ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

Create connection ์˜ˆ์ œ1

     > Local Database ์—ฐ๊ฒฐ
     **local = mysql.connector.connect
     (
     host = "localhost",
     user = "root",
     password = "๋น„๋ฐ€๋ฒˆํ˜ธ"
     )

Create Connection ์˜ˆ์ œ2

AWS RDS(database -1)์—ฐ๊ฒฐ
remote = mysql.connector.connect
(
host ="์—”๋“œํฌ์ธํŠธ",
port = 3306,
user ="admin",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ"
)

close Database

remote.close()
โ—์‹คํ–‰ ํ›„ ๋ฐ”๋กœ๋ฐ”๋กœ ๋‹ซ์•„์ค˜์•ผ ๋‚˜์ค‘์— ๋ณต์žกํ•ด์ง€์ง€ ์•Š๋Š”๋‹ค.

Create Connection ์˜ˆ์ œ3

Local MySQL์˜ zerobase์— ์—ฐ๊ฒฐ
local =mysql.connector.connect
(
host ="localhost",
user ="root",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ",
database ="zerobase"
)

local.close()

Create Connection ์˜ˆ์ œ4

AWS RDS(database-1)์˜ zerobase์— ์—ฐ๊ฒฐ
remote = mysql.connector.connect
(
host ="์—”๋“œํฌ์ธํŠธ",
port = 3306,
user ="admin",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ",
database ="zerobase"
)

remote.close()

๐Ÿ“‚Query ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ฝ”๋“œ

-์ ‘์† ํ›„ cursor๋ฅผ ๋งŒ๋“  ํ›„ exeute๋กœ ์ฟผ๋ฆฌ๋ฅผ ๋ณด๋‚ด์ฃผ๋Š” ์ฝ”๋“œ

Execute SQL ์˜ˆ์ œ1

ํ…Œ์ด๋ธ” ์ƒ์„ฑ
remote =mysql.connector.connect(
host = "์—”๋“œํฌ์ธํŠธ",
port = 3306,
user = "admin",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ",
database ="zerobase"

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

remote.close()

๋ฐ‘์— ํ„ฐ๋ฏธ๋„์—์„œ ํ™•์ธ (vscode)
์„œ๋ฒ„์— ์ ‘์†
mysql -h "์—”๋“œํฌ์ธํŠธ" -P 3306 -u admin -p zerobase
show tables;
desc sql_file;

-> ์ƒ์„ฑ๋œ ๊ฒƒ์„ ํ™•์ธ ํ•  ์ˆ˜ ์žˆ๋‹ค.

Execute sql ์˜ˆ์ œ2

-ํ…Œ์ด๋ธ” ์‚ญ์ œ
import mysql.connector

remote = mysql.connector.connect(
host = "database-1.cvs6igoc6b14.us-east-2.rds.amazonaws.com",
port =3306,
user ="admin",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ",
database ="zerobase"
)

cur = remote.cursor()
cur.execute("DROP TABLE sql_file")

remote.close()

๋ฐ‘์— ํ„ฐ๋ฏธ๋„์—์„œ ํ™•์ธ (vscode)
mysql> desc sql_file;
ERROR 1146 (42S02): Table 'zerobase.sql_file' doesn't exist

Execute SQL File ์˜ˆ์ œ1

-1.test03.sql ์ƒ์„ฑ

์™ผ์ชฝ์— ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ์ž…๋ ฅ
CREATE TABLE sql_file
(
id int,
filename VARCHAR(16)
);

Execute SQL File ์˜ˆ์ œ1

-2. ์‹คํ–‰ (python.ipynbํŒŒ์ผ์—์„œ)

remote = mysql.connector.connect(
host = "database-1.cvs6igoc6b14.us-east-2.rds.amazonaws.com",
port =3306,
user ="admin",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ",
database ="zerobase"
)
cur = remote.cursor()
sql =open ("test03.sql").read() -ํŒŒ์ผ์„ ์—ด๊ณ  ์ฝ์–ด์ฃผ์„ธ์š”
cur.execute(sql)
remote.close()

โ—test03.sql ๊ฐ™์€ ๊ฒฝ๋กœ๋ผ ์ด๋ ‡๊ฒŒ ์ ์ง€๋งŒ ๋‹ค๋ฅธ ๊ฒฝ๋กœ๋ผ๋ฉด ๊ฒฝ๋กœ ์ ์–ด์ค˜์•ผํ•œ๋‹ค.

3. ํ™•์ธ


sql_file์ด ๋‹ค์‹œ ์ƒ๊ฒจ๋‚จ

Execute SQL File ์˜ˆ์ œ2

-SQL File๋‚ด์— Query๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์กด์žฌํ•˜๋Š” ๊ฒฝ์šฐ
1. test04.sql ์ƒ์„ฑ

์™ผ์ชฝ์— ํŒŒ์ผ ์ƒ์„ฑ ํ›„ ์ž…๋ ฅ
INSERT INTO sql_file VALUES(1,"test01.sql")
INSERT INTO sql_file VALUES(2,"test02.sql")
INSERT INTO sql_file VALUES(3,"test03.sql")
INSERT INTO sql_file VALUES(4,"test04.sql")

2. ์‹คํ–‰-(python.ipynbํŒŒ์ผ์—์„œ)

remote = mysql.connector.connect(
host = "database-1.cvs6igoc6b14.us-east-2.rds.amazonaws.com",
port =3306,
user ="admin",
password ="๋น„๋ฐ€๋ฒˆํ˜ธ",
database ="zerobase"
)
cur = remote.cursor()
sql = open("test04.sql").read()
for result_iterator in cur.execute(sql, multi=True):
if result_iterator.with_rows:
print(result_iterator.fetchall())
else:
print(result_iterator.statment)

remote.commit()
remote.close()

3. ํ™•์ธ

show tables;
select *from sql_file

0๊ฐœ์˜ ๋Œ“๊ธ€

๊ด€๋ จ ์ฑ„์šฉ ์ •๋ณด