Sunday_August_30
.
.
.
Python์์ DB์ ์ ๊ทผ์ ํด์ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๋ ค๋ฉด ์ด๋ป๊ฒ ํด์ผ ํ ๊น?
Python์์ MySQL ๋ฐ์ดํ๋ฒ ์ด์ค๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํด ์ฐ์ Python DB API ํ์ค์ ๋ฐ๋ฅด๋ MySQL DB ๋ชจ๋์ ๋ค์ด๋ฐ์์ผ ํ๋ค.
MySQL DB ๋ฅผ ์ง์ํ๋ Python ๋ชจ๋์ ์ฌ๋ฌ ๊ฐ์ง๊ฐ ์๋๋ฐ,
์ด๋ฒ ๊ธ์์๋ PyMySql ์ด๋ผ๋ ๋ชจ๋์ ์ฌ์ฉํด ๋ณผ ๊ฒ์ด๋ค.
MySQL DB ๋ชจ๋ ์ค ํ๋์ธ PyMySql ๋ชจ๋์ ๋ค์๊ณผ ๊ฐ์ด ์ค์นํ๋ค.
pip install PyMySQL
์ฌ์ฉ๋ฒ์ ๊ฐ๋จํ๋ค.
๊ทธ๋ฅ import๋ฅผ ํด์ฃผ๋ฉด ๋๋ค.
import pymysql ์ด๋ ๊ฒ!
๊ทธ ๋ค์ pymysql.connect() ๋ฉ์๋๋ฅผ ์ด์ฉํด์
mysql์ ์ฐ๊ฒฐ์ ํ๋ค!
์ ๊ทธ๋ผ ์๋ฅผ๋ค์ด
import pymysql connect_obj = pymysql.connect()
์ฌ๊ธฐ์์ connect_obj์ DB์ ์ฐ๊ฒฐ๋ connect ๊ฐ์ฒด์ด๋ค.
โ๏ธ connect() ๋ฉ์๋ ์์๋ DB์ ๊ดํ ์ ๋ณด๋ค์ ๋ฃ์ด์ฃผ๋ฉด ๋๋ค.
pymysql.connect(host='localhost', user='tester', password='', db='testdb', charset='utf8')
์ด๋ฐ์์ผ๋ก ๋ง์ด๋ค. ๋ฌผ๋ก ๋ฐ๋ก ์ ๋ ๊ฒ ๋ฃ์ด์ฃผ๋ฉด ์๋๊ณ ํ์ผ์ ๋ฐ๋ก ๋นผ์ฃผ์ด์ import๋ฅผ ํ๊ณ ๊ทธ ํ์ผ์ .gitignore์ ๋ฑ๋ก์ ํด์ฃผ์ด์ผ ํ๋ค.
DB์ค์ ์ ๋งค์ฐ ์ค์ํ๊ธฐ๋๋ฌธ!
์๋ฌดํผ,
DB์ ์์ ์ฑ๊ณตํ๋ค๋ฉด connect๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค๊ณ ํ๊ณ , ๋๋ ์์๋ก ๊ทธ ๊ฐ์ฒด์ ์ด๋ฆ์ connect_obj๋ผ๊ณ ํ๋ค.
์ด connect_obj๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ค์ cursor()๋ผ๋ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ๋ฉด
Cursor๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋ฐ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ ์ด ๊ฐ์ฒด์ ์ด๋ฆ์ cursor๋ผ๊ณ ํ๊ฒ ๋ค.
import pymysql connect_obj = pymysql.connect() cursor = connect_obj.cursor()
์ฌ๊ธฐ์ cursor๋ DB fetch๋ฅผ ๊ด๋ฆฌํ๊ฒ ๋๋ค.
(๋ค์๊ธ์์ fetch๋ฅผ ๋ค๋ฃฌ๋ค.)
์ด cursor ๊ฐ์ฒด๋ .execute() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด์
DB์ SQL์ฟผ๋ฆฌ๋ฌธ์ ๋ ๋ฆด ์ ์๋ค.
sql = """select * from abc;""" cursor.execute(sql)
์๋ฅผ๋ค์ด ์ด๋ ๊ฒ ํ๋ฉด ์ sql๋ณ์์ ๋ด๊ธด sql๋ฌธ์ฅ์ด execute๋ผ๋ ๋ฉ์๋์ ์ธ์๋ก ๋ค์ด๊ฐ์ ์คํ์ด ๋๋ค.
โ๏ธ ๋ค์๊ธ์์ ์์ธํ ๋ค๋ฃจ๊ฒ ์ง๋ง, ์ด๋ ๊ฒ ์คํ์ด ๋ cursor๊ฐ์ฒด์๋
์ ๋ฌธ์ฅ์ด ์คํํ๊ณ ๋ฆฌํด๋ ๋ฌด์ธ๊ฐ๋ค์ด ๋ค์ด์๋ค.
DML ๋ฌธ์ฅ์ค์์ select๋ฅผ ์ ์ธํ
insert/update/delete ์ ๋ฌธ์ฅ์ ์คํํ ๊ฒฝ์ฐ์๋
cursor๊ฐ ์๋ connect_obj๊ฐ์ฒด์์
commit()๋ฉ์๋, ์ฆ connect_obj.commit()์ด๋ผ๋ ๋ฉ์๋๋ฅผ ์ด์ฉํด์
๊ฐฑ์ ์ ํ์ (์ ์ฅ)ํด์ฃผ์ด์ผ ํ๋ค.
๋ง์ง Django์์ ORM์ ์ด์ฉํ๊ณ .save()๋ฅผ ํด์ฃผ๋ ๊ฒ๊ณผ ๊ฐ๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก connect_obj.close()๋ก DB์ ์์ ๋ซ์์ค๋ค.