❇️ 요약
- Python with MySQL 실습환경
- Python with MySQL
- Execute SQL
📖 Python with MySQL 실습환경
🔆 jupyter Notebook 실행
VSCode 혹은 웹브라우저를 통해 실행하고, ds_study환경에서 작업
- 실행위치 :
jupyter notebook과 mysql은 모두 sql_ws 폴더에서 시작
- AWS RDS로 생성한
database-1 모두 사용
🔆 데이터 삭제
- AWS RDS(database-1) zerobase의 police_station 테이블의 데이터를 모두 지운다.
(base) C:\Users\user>conda activate da_study
(da_study) C:\Users\user>cd C:/sql_ws
(da_study) C:\sql_ws>code .
(da_study) C:\sql_ws>mysqldump
Enter password: *********
(da_study) C:\sql_ws>mysql -h myhostname -P 3306 -u admin -p zerobase
Enter password: *********
...
mysql> DELETE FROM police_station;
Query OK, 4 rows affected (0.01 sec)
🔆 python.ipynb 파일 생성

📖 Python with MySQL
🔆 Python으로 Mysql 접속후 사용하는 방법
🔆 Install MySQL Driver
- Python에서 MySQL을 사용하기 위해서는 먼저 MySQL Driver를 설치
pip install mysql-connector-python
import mysql.connector
🔆 Create Connection
mydb = mysql.connector.connect(
host = "hostname",
user = "username",
password = "password"
)
mydb = mysql.connector.connect(
host = "hostname",
port = "port",
user = "username",
password = "password",
database = "dbname"
)
🔆 Close Database
import mysql.connector
mydb = mysql.connector.connect(
host = "hostname",
user = "username",
password = "password",
database = "dbname"
)
mydb.close()
🔆 특정 Database에 접속하기 위한 코드
import mysql.connector
mydb = mysql.connector.connect(
host = "hostname",
port = "port",
user = "username",
password = "password",
database = "dbname"
)
☁️ 실습
☁️ Install MySQL Driver
PS C:\sql_ws> conda activate da_study
PS C:\sql_ws> pip install mysql-connector-python
Collecting mysql-connector-python
Downloading mysql_connector_python-8.4.0-cp38-cp38-win_amd64.whl.metadata (2.0 kB)
Downloading mysql_connector_python-8.4.0-cp38-cp38-win_amd64.whl (14.4 MB)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 14.4/14.4 MB 10.1 MB/s eta 0:00:00
Installing collected packages: mysql-connector-python
Successfully installed mysql-connector-python-8.4.0

import mysql.connector
☁️ Local Database 연결

import mysql.connector
local = mysql.connector.connect(
host = "localhost",
user = "root",
password = "****"
)
☁️ AWS RDS(database-1) 연결

remote = mysql.connector.connect(
host = "myhostname",
port = 3306,
user = "admin",
password = "********"
)
☁️ Close Database

local.close()
remote.close()
☁️ Local MySQL의 zerobase 연결

import mysql.connector
local = mysql.connector.connect(
host = "localhost",
user = "root",
password = "****",
database = "zerobase"
)
local.close()
☁️ AWS RDS(database-1)의 zerobase에 연결

remote = mysql.connector.connect(
host = "myhostname",
port = 3306,
user = "admin",
password = "********",
database = "zerobase"
)
remote.close()
📖 Execute SQL
🔆 Execute SQL
import mysql.connector
mydb = mysql.connector.connect(
host = "hostname",
user = "username",
password = "password",
database = "dbname"
mycursor = mydb.cursor()
mycursor.execute(query);
🔆 Execute SQL File 1
mydb = mysql.connector.connect(
host = "hostname",
user = "username",
password = "password",
database = "dbname"
mycursor = mydb.cursor()
sql = open("filename.sql").read()
mycursor.execute(sql);
🔆 Execute SQL File 2
- SQL File 내에 Query가 여러개 존재하는 경우
mydb = mysql.connector.connect(
host = "hostname",
user = "username",
password = "password",
database = "dbname"
mycursor = mydb.cursor()
sql = open("filename.sql").read()
result = mycursor.execute(sql, multi = True);
☁️ 실습
☁️ Execute SQL - 테이블 생성

remote = mysql.connector.connect(
host = "myhostname",
port = 3306,
user = "admin",
password = "********",
database = "zerobase"
)
cur = remote.cursor()
cur.execute("CREATE TABLE sql_file (id int, filename varchar(16))")
remote.close()
PS C:\sql_ws> mysql -h myhostname -P 3306 -u admin -p zerobase
...
mysql> desc sql_file;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| filename | varchar(16) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
☁️ Execute SQL - 테이블 삭제

remote = mysql.connector.connect(
host = "myhostname",
port = 3306,
user = "admin",
password = "********",
database = "zerobase"
)
cur = remote.cursor()
cur.execute("DROP TABLE sql_file")
remote.close()
mysql> desc sql_file;
ERROR 1146 (42S02): Table 'zerobase.sql_file' doesn't exist
☁️ Execute SQL File
CREATE TABLE sql_file
(
id int,
filename varchar(16)
);

remote = mysql.connector.connect(
host = "myhostname",
port = 3306,
user = "admin",
password = "********",
database = "zerobase"
)
cur = remote.cursor()
sql = open("test03.sql").read()
cur.execute(sql)
remote.close()
mysql> desc sql_file;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| filename | varchar(16) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
2 rows in set (0.01 sec)
☁️ Execute SQL File
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 = "myhostname",
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()
mysql> SELECT * FROM sql_file;
+------+------------+
| id | filename |
+------+------------+
| 1 | test01.sql |
| 2 | test02.sql |
| 3 | test03.sql |
| 4 | test04.sql |
+------+------------+
4 rows in set (0.01 sec)