pymysql์ ์จ์ request์ ๋ด๊ธด ๋ฐ์ดํฐ๋ฅผ db์ ์ ์ฅํ๊ฑฐ๋, request์ ๋ํ response๋ฅผ ๋ณด๋ด๋ ๋ฐฉ๋ฒ์ ๊ณต๋ถ ๋ชฉ์ ์ผ๋ก ์ ๋ฆฌํ๋ค.
์์ฌ๋ฏธ์ฝ๋ฉ์ ๋งค์ฐ ์ ๋ฆฌ๊ฐ ์ ๋์ด์์ด ๊ณ ๋๋ก ๊ฐ์ ธ์จ ์ ์ฐธ๊ณ !
์ฌ๊ธฐ๋ ์ข์ ๊ฒ ๊ฐ๋ค.
https://www.tutorialspoint.com/python_data_access/python_mysql_select_data.htm
mysql์ python์์ ์ฌ์ฉํ ์ ์๋ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋
pymysql.connect() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ MySQL์ ์ฐ๊ฒฐ. ํธ์คํธ๋ช , ํฌํธ, ๋ก๊ทธ์ธ, ์ํธ, ์ ์ํ DB ๋ฑ์ ํ๋ผ๋ฏธํฐ๋ก ์ง์
MySQL ์ ์์ด ์ฑ๊ณตํ๋ฉด, ์์์ ๋ง๋ Connection ๊ฐ์ฒด๋ก๋ถํฐ cursor() ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ Cursor ๊ฐ์ฒด๋ฅผ ๊ฐ์ ธ์ด
- Cursor: SQL ๊ตฌ๋ฌธ์ ์คํํ๊ธฐ ์ํด์ ๋ง๋๋ ๊ฐ์ฒด (Executes a SQL statement.)
์ฐธ๊ณ ๋งํฌ: https://www.tutorialspoint.com/python_data_access/python_mysql_cursor_object.htm
The MySQLCursor of mysql-connector-python (and similar libraries) is used to execute statements to communicate with the MySQL database.
Using the methods of it you can execute SQL statements, fetch data from the result sets, call procedures.
You can create Cursor object using the cursor() method of the Connection object/class.
-> cursor ๋ control structure of database (์ฐ๊ฒฐ๋ ๊ฐ์ฒด)
SQL ์ฟผ๋ฆฌ์ ๊ฒฝ์ฐ Cursor ๊ฐ์ฒด์ fetchall(), fetchone(), fetchmany() ๋ฑ์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ์๋ฒ๋ก๋ถํฐ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋์์ ํ์ฉ
์ฝ์ , ๊ฐฑ์ , ์ญ์ ๋ฑ์ DML(Data Manipulation Language) ๋ฌธ์ฅ์ ์คํํ๋ ๊ฒฝ์ฐ, INSERT/UPDATE/DELETE ํ Connection ๊ฐ์ฒด์ commit() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐ์ดํ๋ฅผ ํ์
Connection ๊ฐ์ฒด์ close() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ DB ์ฐ๊ฒฐ์ ๋ซ์
import pymysql
# ์ ์
# ๋น๋ฐ๋ฒํธ๊ฐ ํฌํจ๋์ด ์๊ธฐ ๋๋ฌธ์ ๋ณดํต configํ์ผ์์ key๊ฐ์ผ๋ก ๋ถ๋ฅธ๋ค.
# ํด๋น ์ฝ๋๋ ์์์ด๊ธฐ ๋๋ฌธ์ ์ง์ ์
๋ ฅ๋์ด ์๋ ํํ์ธ ์ ์ ์ฐธ๊ณ !
db = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='your_password',
db='your_dbname',
charset='utf8'
)
# Cursor Object ๊ฐ์ ธ์ค๊ธฐ
cursor = db.cursor()
# SQL ๋ฌธ ๋ง๋ค๊ธฐ
sql = '''
CREATE TABLE your_table (
id INT UNSIGNED NOT NULL AUTO_INCREMENT,
name VARCHAR(20) NOT NULL,
model_num VARCHAR(10) NOT NULL,
model_type VARCHAR(10) NOT NULL,
PRIMARY KEY(id)
);
'''
# SQL ์คํํ๊ธฐ
cursor.execute(sql)
# ์คํ mysql ์๋ฒ์ ํ์ ๋ฐ์ํ๊ธฐ
db.commit()
# DB ์ฐ๊ฒฐ ๋ซ๊ธฐ
db.close()
db = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='your_password',
db='your_dbname',
charset='utf8'
)
try:
with db.cursor() as cursor:
sql = "SELECT * FROM cpu_info WHERE name = 'i5'"
cursor.execute(sql)
while result:
result = cursor.fetchone()
print(result)
finally:
db.close()
db = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='your_password',
db='your_dbname',
charset='utf8'
)
try:
with db.cursor() as cursor:
sql = "UPDATE cpu_info SET model_type='%s' WHERE name = 'i7'" % '์นด๋น๋ ์ดํฌ'
cursor.execute(sql)
db.commit()
print(cursor.rowcount)
finally:
db.close()
db = pymysql.connect(
host='127.0.0.1',
port=3306,
user='root',
passwd='your_password',
db='your_dbname',
charset='utf8'
)
hit_count = 20
try:
with db.cursor() as cursor:
sql = "DELETE FROM cpu_info WHERE name = '%s'" % 'i7'
cursor.execute(sql)
db.commit()
print(cursor.rowcount)
finally:
db.close()
๊ทธ๊ฑฐ ์์์? ์ ๋ ๋งค์ผ ์ด ๊ณณ์์ ๋ฐฐ์ฐ๊ณ ์๋ค๋ ๊ฒ์ ใ ใ ์ง์ง ํ์ด์ฌ ํ๋ผ์คํฌ ํ์ด๋ง์ด์์คํ์ ๋ชฐ๋ผ์ ๊ฒ์ํ๋ฉด ๋งจ๋ ์ด ๋ธ๋ก๊ทธ๋ก ๋ค์ด์ด ใ ใ ใ ใ ใ ใ ใ ์ ๋ง๊ฐ์ฌํด์ ์์๋