
실습 환경 세팅
- Web Browser나 VSCode를 통해 Jupyter Notebook을 실행하고, ds_study 환경에서 작업한다.
- Jypyter Notebook과 MySQL은 모두 sql_ws 폴더에서 시작한다.
- AWS RDS로 생성한 database-1 DB가 사용 가능한 상태인지 확인한다.
- AWS RDS (database-1) zerobase DB의 police_station Table의 데이터를 모두 지워준다.
- ds_study 환경으로 새로운 Jupyter Notebook 파일(.ipynb)을 생성한다.
pip install mysql-connector-python

MySQL에 접속하기 위해 connect를 생성한다.
연결한 후에는 반드시 연결을 해제해야 한다.
import mysql.connector
mydb = mysql.connector.connect(
host = "host_name",
port = port_number, //--> 외부 접속으로 포트 번호가 필요할 때 추가해 준다.
user = "user_name",
password = "password",
database = "database_name" //--> 특정 DB로 바로 접속하고자 할 때 추가한다.
)
mydb.close()
import mysql.connector
mydb = mysql.connector.connect(
host = "host_name",
port = port_number,
user = "user_name",
password = "password",
database = "database_name"
)
mycursor = mydb.cursor()
mycursor.execute("query_statement")
mydb.close()
remote = mysql.connector.connect(
host = "database-1.us-east-2.rds.amazonaws.com",
port = 3306,
user = "admin",
password = "***********",
database = "zerobase"
)
cur = remote.cursor()
cur.execute("CREATE TABLE sql_file (id int, filename varchar(16))")

cur = remote.cursor()
cur.execute("DROP TABLE sql_file")
remote.close()
import mysql.connector
mydb = mysql.connector.connect(
host = "host_name",
port = port_number,
user = "user_name",
password = "password",
database = "database_name"
)
mycursor = mydb.cursor()
sql = open("file_name.sql").read()
// One Query
mycursor.execute(sql)
// Multi Query
mycursor.execute(sql, multi=True)
mydb.close()
multi=True 옵션을 준다. remote = mysql.connector.connect(
host = "database-1.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()

remote = mysql.connector.connect(
host = "database-1.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.statement)
remote.commit()
remote.close()
/*실행결과
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")*/

cursor.fetchall()
buffered=True 옵션을 사용한다.예제: sql_file Table 조회
remote = mysql.connector.connect(
host = "database-1.us-east-2.rds.amazonaws.com",
port = 3306,
user = "admin",
password = "*************",
database = "zerobase"
)
cur = remote.cursor(buffered=True)
cur.execute("SELECT * FROM sql_file")
result = cur.fetchall()
print(result)
// [(1, 'test01.sql'), (2, 'test02.sql'), (3, 'test03.sql'), (4, 'test04.sql')]
for result_iter in result:
print(result_iter)
/* (1, 'test01.sql')
(2, 'test02.sql')
(3, 'test03.sql')
(4, 'test04.sql') */
remote.close()
CSV에 있는 데이터를 Python으로 읽어와 MySQL(INSERT)를 이용해 데이터베이스의 테이블로 만든다.
import pandas as pd
df = pd.read_csv("police_station.csv")
‘euc-kr’로 설정해 준다. import mysql.connector
connector = mysql.connector.connect(
host = "database-1.us-east-2.rds.amazonaws.com",
port = 3306,
user = "zero",
password = "zerobase",
database = "zerobase"
)
buffer=True 설정을 해준다. cursor = connector.cursor(buffered=True)
sql = "INSERT INTO police_station VALUES (%s, %s)"
mysql.connector execute() : 공식문서 참고
commit() 은 데이터를 데이터베이스에 적용하기 함수로 이 함수가 실행되기 전까지는 데이터가 테이블에 입력되지 않는다.
for idx, row in df.iterrows():
cursor.execute(sql, tuple(row))
connector.commit()
cursor.execute("SELECT * FROM police_station")
result = cursor.fetchall()
for row in result:
print(row)
connector.close()
result_df = pd.DataFrame(result)