Pyhton으로 MySQL 접속 후 사용하는 방법
pip install mysql-connector-python
mydb = mysql.connector.connect(
host = "<hostname>",
user = "<username>",
password = "<password>"
)
remote = mysql.connector.connect(
host = "database-1~~~.amazonaws.com",
port = 3306,
user = "d~~~e",
password = "*******"
)
import mysql.connector
mydb = mysql.connector.connect(
host = "<hostname>",
user = "<username>",
password = "<password>",
database = "<databasename>"
)
mydb.close()
import mysql.connector
mydb = mysql.connector.connect(
host = "<hostname>",
port = <port>,
user = "<username>",
password = "<password>",
database = "<databasename>"
)
ㄴ 특정 데이터 베이스에 접속하기 위한 코드
import mysql.connector
mydb = mysql.connector.connect(
host = "<hostname>",
user = "<username>",
password = "<password>",
database = "<databasename>"
)
mycursor = mydb.cursor()
mycursor.execute(<query>);
ㄴ 쿼리 실행
import mysql.connector
remote = mysql.connector.connect(
host = "database-1~~~~~~~~~~~~~.amazonaws.com",
port = 3306,
user = "d~~~e",
password = "*****",
database = "zerobase"
)
cur = remote.cursor()
cur.execute("Create Table sql_file (id int, filename varchar(16))")
remote.close()
⇊
mysql> desc sql_file;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int | YES | | NULL | |
| filename | varchar(16) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
import mysql.connector
remote = mysql.connector.connect(
host = "database-1.~~~~.amazonaws.com",
port = 3306,
user = "d~~~",
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
import mysql.connector
mydb = mysql.connector.connect(
host = "<hostname>",
user = "<username>",
password = "<password>",
database = "<databasename>"
)
mycursor = mydb.cursor()
sql = open("<filename>.sql").read()
mycursor.execute(sql)
import mysql.connector
remote = mysql.connector.connect(
host = "database-1.~~~~.amazonaws.com",
port = 3306,
user = "d~~~",
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 | |
+----------+-------------+------+-----+---------+-------+
import mysql.connector
mydb = mysql.connector.connect(
host = "<hostname>",
user = "<username>",
password = "<password>",
database = "<databasename>"
)
mycursor = mydb.cursor()
sql = open("<filename>.sql").read()
result = mycursor.execute(sql, multi=True)
ㄴ test04.sql 생성
import mysql.connector
remote = mysql.connector.connect(
host = "database-1.~~~~.amazonaws.com",
port = 3306,
user = "d~~~",
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 |
+------+------------+
mycursor.execute(<query>)
result = mycursor.fetchall()
for data in result:
print(data)
import mysql.connector
remote = mysql.connector.connect(
host = "database-1.~~~~.amazonaws.com",
port = 3306,
user = "d~~~",
password = "********",
database = "zerobase"
)
cur = remote.cursor(buffered=True)
cur.execute("Select * from sql_file")
result = cur.fetchall()
for result_iterator in result:
print(result_iterator)
remote.close()
⇊
(1, 'test01.sql')
(2, 'test02.sql')
(3, 'test03.sql')
(4, 'test04.sql')
CSV에 있는 데이터를 파이썬으로 INSERT
import pandas as pd
df = pd.read_csv("..\ds_study\data\police_station.csv")
df.head()
⇊
import mysql.connector
remote = mysql.connector.connect(
host = "database-1.~~~~.amazonaws.com",
port = 3306,
user = "d~~~",
password = "********",
database = "zerobase"
)
cursor = conn.cursor(buffered=True)
sql = "INSERT INTO police_station VALUES (%s, %s)"
for i, row in df.iterrows():
cursor.execute(sql, tuple(row))
print(tuple(row))
conn.commit()
cursor.execute("SELECT * FROM police_station")
result = cursor.fetchall()
for row in result:
print(row)
conn.close()
⇊
('서울중부경찰서', '서울특별시 중구 수표로 27')
('서울종로경찰서', '서울특별시 종로구 율곡로 46')
('서울남대문경찰서', '서울특별시 중구 한강대로 410')
('서울서대문경찰서', '서울특별시 서대문구 통일로 113')
('서울혜화경찰서', '서울특별시 종로구 창경궁로 112-16')
('서울용산경찰서', '서울특별시 용산구 원효로89길 24')
('서울성북경찰서', '서울특별시 성북구 보문로 170')
('서울동대문경찰서', '서울특별시 동대문구 약령시로 21길 29')
('서울마포경찰서', '서울특별시 마포구 마포대로 183')
('서울영등포경찰서', '서울특별시 영등포구 국회대로 608')
('서울성동경찰서', '서울특별시 성동구 왕십리광장로 9')
('서울동작경찰서', '서울특별시 동작구 노량진로 148')
('서울광진경찰서', '서울특별시 광진구 광나루로 447 광진소방서 임시청사 (능동)')
('서울서부경찰서', '서울특별시 은평구 은평로9길 15')
('서울강북경찰서', '서울특별시 강북구 오패산로 406')
('서울금천경찰서', '서울특별시 관악구 남부순환로 1435')
('서울중랑경찰서', '서울특별시 중랑구 중랑역로 137')
('서울강남경찰서', '서울특별시 강남구 테헤란로 114길 11')
('서울관악경찰서', '서울특별시 관악구 관악로5길 33')
('서울강서경찰서', '서울특별시 양천구 화곡로 73')
('서울강동경찰서', '서울특별시 강동구 성내로 33')
('서울종암경찰서', '서울특별시 성북구 종암로 135')
('서울구로경찰서', '서울특별시 구로구 가마산로 235')
('서울서초경찰서', '서울특별시 서초구 반포대로 179')
('서울양천경찰서', '서울특별시 양천구 목동동로 99')
...
('서울방배경찰서', '서울특별시 서초구 방배천로 54')
('서울도봉경찰서', '서울특별시 도봉구 노해로 403')
('서울수서경찰서', '서울특별시 강남구 개포로 617')
('서울은평경찰서', '서울특별시 은평구 연서로 365')
import mysql.connector
remote = mysql.connector.connect(
host = "database-1.~~~~.amazonaws.com",
port = 3306,
user = "d~~~",
password = "********",
database = "zerobase"
)
sql2 = "INSERT INTO crime_status VALUES ('2020', %s, %s, %s, %s)"
cursor = con2.cursor(buffered=True)
for i, row in df_cr.iterrows():
cursor.execute(sql2, tuple(row))
print(tuple(row))
con2.commit()
cursor.execute("SELECT * From crime_status")
result2 = cursor.fetchall()
for row in result2:
print(row)
con2.close()
⇊
...
(2020, '수서', '절도', '발생', 1010)
(2020, '수서', '절도', '검거', 475)
(2020, '수서', '폭력', '발생', 1394)
(2020, '수서', '폭력', '검거', 1200)