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์ ‘์†์„ ๋‹ซ์•„์ค€๋‹ค.

profile
๐Ÿ‡ Rabbit can take a rest, but ๐Ÿข turtle can't

0๊ฐœ์˜ ๋Œ“๊ธ€