
pymysql์ Python์์ MariaDB / MySQL ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ ์ํ๊ธฐ ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค.
Python ์ฝ๋์ SQL ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฌ์ด๋ฅผ ์ฐ๊ฒฐํด์ฃผ๋ DB ๋๋ผ์ด๋ฒ๋ค.
ํ๋ก๊ทธ๋จ๊ณผ ๋ฐ์ดํฐ๋ฒ ์ด์ค๋ ์๋ก ๋ค๋ฅธ ์ธ์ด๋ฅผ ์ฌ์ฉํ๋ค.
์ด ๋์ ์ง์ ๋ํํ ์ ์๋ค. ๊ทธ๋์ ์ค๊ฐ์ ํต์ญ์ฌ๊ฐ ํ์ํ๋ค.
[ Python ์ฝ๋ ]
โ
โ (DB ๋๋ผ์ด๋ฒ)
โผ
[ pymysql ]
โ
โผ
[ MariaDB / MySQL ]
pymysql์ SQL์ DB๊ฐ ์ดํดํ ์ ์๋ ํํ๋ก ์ ๋ฌํ๊ณ ,
DB์ ์๋ต์ ๋ค์ Python์ด ์ดํดํ ์ ์๊ฒ ๋ณํํ๋ค.
Workbench๋ DataGrip์์๋ SQL์ ์คํํ ์ ์๋ค.
ํ์ง๋ง ์ค์ ์๋น์ค์์๋ ์ฌ๋์ด ์ง์ SQL์ ์น์ง ์๋๋ค.
์ด ๋ชจ๋ SQL์ Python ์ฝ๋๊ฐ ๋์ ์คํํด์ผ ํ๋ค.
๊ทธ ์ฐ๊ฒฐ ๊ณ ๋ฆฌ๊ฐ ๋ฐ๋ก pymysql์ด๋ค.
pip install pymysql
์ค์น ํ์ธ
pip show pymysql
Python ํ์ผ์ ํ๋ ๋ง๋ค๊ณ ์๋ ์ฝ๋๋ฅผ ์คํํ๋ค.
์ฐ๊ฒฐ ์ ๋ณด๋ ๋ณธ์ธ ํ๊ฒฝ์ ๋ง๊ฒ ์์ .
import pymysql
conn = pymysql.connect(
host="์๋ฒ์ฃผ์",
user="์ฌ์ฉ์๋ช
",
password="๋น๋ฐ๋ฒํธ",
db="๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
",
charset="utf8mb4"
)
print("์ฐ๊ฒฐ ์ฑ๊ณต!")
conn.close()
"์ฐ๊ฒฐ ์ฑ๊ณต!"์ด ์ถ๋ ฅ๋๋ฉด DB์ ํต์ ์ด ์ด๋ฆฐ ์ํ๋ค.
๋น๋ฐ๋ฒํธ๋ฅผ ์ฝ๋์ ์ง์ ์ฐ๋ ๊ฑด ์ฌ๊ณ ์ ๋ฐ์ด๋ค.
๋ฐ๋์ ํ๊ฒฝ๋ณ์๋ฅผ ์ฌ์ฉํ๋ค.
import os
import pymysql
conn = pymysql.connect(
host=os.getenv("DB_HOST"),
user=os.getenv("DB_USER"),
password=os.getenv("DB_PASSWORD"),
db=os.getenv("DB_NAME"),
charset="utf8mb4"
)
DB์ ์ฐ๊ฒฐํ๋ค๊ณ ๋ฐ๋ก SQL์ ์คํํ ์ ์๋ ๊ฑด ์๋๋ค. cursor๊ฐ ํ์ํ๋ค.
cursor๋ ์ฟผ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ๋ฆฌํค๋ ํฌ์ธํฐ๋ค.
์ฟผ๋ฆฌ ๊ฒฐ๊ณผ ------------------ [1] jay, 25 โ cursor [2] ์ฒ ์, 30 [3] ์ํฌ, 28
cursor๋ ํ ์ค์ฉ ์ด๋ํ๋ฉด์ ๋ฐ์ดํฐ๋ฅผ ์ฝ๋๋ค.
fetchone()์ ํธ์ถํ๋ฉด ํ์ฌ ํ์ ๋ฐํํ๊ณ ๋ค์ ํ์ผ๋ก ์ด๋ํ๋ค.
| ๋ฉ์๋ | ๋ฐํ๊ฐ | ์ฌ์ฉ ์์ |
|---|---|---|
| fetchone() | ํ ํ | ๊ฒฐ๊ณผ๊ฐ 1๊ฑด์ผ ๋ |
| fetchall() | ๋ชจ๋ ํ | ๊ฒฐ๊ณผ๊ฐ ์ฌ๋ฌ ๊ฑด์ผ ๋ |
| fetchmany(n) | n๊ฐ ํ | ๋๋ ๋ฐ์ดํฐ ๋ถํ ์ฒ๋ฆฌ |
1. connect โ DB ์ฐ๊ฒฐ 2. cursor โ ์ปค์ ์์ฑ 3. execute โ SQL ์คํ 4. fetch โ ๊ฒฐ๊ณผ ๊ฐ์ ธ์ค๊ธฐ 5. close โ ์ปค์ ์ข ๋ฃ 6. close โ ์ฐ๊ฒฐ ์ข ๋ฃ
import pymysql
# 1. DB ์ฐ๊ฒฐ
conn = pymysql.connect(
host='์๋ฒ์ฃผ์',
user='์ฌ์ฉ์๋ช
',
password='๋น๋ฐ๋ฒํธ',
db='๋ฐ์ดํฐ๋ฒ ์ด์ค๋ช
',
charset='utf8mb4'
)
# 2. ์ปค์ ์์ฑ
cursor = conn.cursor()
# 3. SQL ์คํ
cursor.execute("SELECT * FROM users")
# 4. ๊ฒฐ๊ณผ ๊ฐ์ ธ์ค๊ธฐ
rows = cursor.fetchall()
for row in rows:
print(row)
# 5. ์ข
๋ฃ (์ปค์ โ ์ฐ๊ฒฐ ์์)
cursor.close()
conn.close()