Python 에서 MySQL 을 사용하기 위해서 MySQL Driver 설치
pip install mysql-connector-python
위와 같이 설치하니 error 발생해서 아래 코드 install 했다.
pip install mysql-connector-python-rf
import mysql.connector
local = mysql.connector.connect(
host= "localhost",
user = "root",
password = "zerobase"
)
local = mysql.connector.connect(
host= "localhost",
user = "root",
password = "zerobase",
database = "zerobase"
)
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase"
)
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
database = "zerobase"
)
local.close()
remote.close()
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
database = "zerobase"
)
cur = remote.cursor()
cur.execute("CREATE TABLE sql_file (id int, filename varchar(16))")
remote.close()
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
database = "zerobase"
)
cur = remote.cursor()
cur.execute("DROP TABLE sql_file")
remote.close()
SQL File 실행하기 위한 코드
CREATE TABLE sql_file
(
id int,
filename varchar(16)
);
# python file
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
database = "zerobase"
)
cur = remote.cursor()
sql = open("test03.sql").read()
cur.execute(sql)
remote.close()
SQL File 내에 Quary가 여러 개 존재하는 경우
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");
⚠️오류 발생 코드
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
database = "zerobase"
)
cur = remote.cursor()
sql = open("test04.sql").read()
cur.execute(sql)
remote.close()
InterfaceError: Use multi=True when executing multiple statements
쿼리 문이 여러 개 있을 땐 multi=True를 작성해야한다.
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
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.statement)
remote.commit()
remote.close()
실행하는 쿼리가 아닌 조회하는 쿼리를 실행할때와 같이 데이터를 가지고 있는 경우 fetch all을 사용하여 데이터를 가져 올 수 있다.
mycursor.execute(<query>)
result = mycursor.fetchall()
for data in result:
print(data)
remote = mysql.connector.connect(
host= "AWS엔드포인트",
port = 3306,
user = "admin",
password = "zerobase",
database = "zerobase"
)
cur = remote.cursor(buffered=True)
cur.execute("SELECT * FROM sql_file")
result = cur.fetchall()
result
for result_iterator in result:
print(result_iterator)
import pandas as pd
df = pd.DataFrame(result)
df
"이 글은 제로베이스 데이터 취업 스쿨 강의를 듣고 작성한 내용으로 제로베이스 데이터 취업 스쿨 강의 자료 일부를 발췌한 내용이 포함되어 있습니다."