๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/DB] SQL - 4. pymysql๋กœ MySQL ์„œ๋ฒ„ ์—ฐ๊ฒฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ ๋ณธ๋ฌธ

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/์ด๋ก 

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค/DB] SQL - 4. pymysql๋กœ MySQL ์„œ๋ฒ„ ์—ฐ๊ฒฐํ•˜๊ณ  ์‚ฌ์šฉํ•˜๊ธฐ

.23 2022. 4. 12. 22:55

4. pymysql

mysql์„ python์„ ํ†ตํ•ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” library.

pip install pymysql

์ผ๋ฐ˜์ ์œผ๋กœ ์œ„์™€ ๊ฐ™์€ ๋ช…๋ น์–ด๋กœ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค์น˜ํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4.1 pymysql ์‚ฌ์šฉ

import pymysql

 

์ฝ”๋“œ ๋‚ด์—์„œ pymysql์„ importํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

4.1.1 pymysql ์—ฐ๊ฒฐ

db = pymysql.connect(
            host='127.0.0.1',
            port=3306,
            user='(user ์ด๋ฆ„)',
            passwd='(์‚ฌ์šฉํ•˜๋Š” mysql password)',
            db='(์‚ฌ์šฉํ•  db ์ด๋ฆ„)',
            charset='utf8'
        )

- host : ์‚ฌ์šฉํ•  mysql ์„œ๋ฒ„์˜ ์ฃผ์†Œ, ์—ฌ๊ธฐ์„œ local db๋ฅผ ์‚ฌ์šฉํ•  ์˜ˆ์ •์ด๋ฏ€๋กœ 127.0.0.1์„ ๋„ฃ์—ˆ๋Š”๋ฐ, ์ƒ๋Œ€๋ฐฉ์˜ ์„œ๋ฒ„์— ์ ‘์†ํ•˜๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ 

ipconfig getifaddr en0

ip๋ฅผ ์–ป์–ด์˜ค๋Š” ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ip ์ฃผ์†Œ๋ฅผ ์–ป์–ด์™€ ์‚ฌ์šฉํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

- port : sql ์„œ๋ฒ„๊ฐ€ ์œ„์น˜ํ•œ ํฌํŠธ๋ฒˆํ˜ธ. ์ผ๋ฐ˜์ ์œผ๋กœ mysql์€ 3306์„ ์‚ฌ์šฉํ•œ๋‹ค.

- user : ์‚ฌ์šฉ์ž ์ด๋ฆ„

- passwd : mysql ์„œ๋ฒ„ ๋น„๋ฐ€๋ฒˆํ˜ธ

- db : ์‚ฌ์šฉํ•  db ์ด๋ฆ„

- charset : ํ•œ๊ธ€ ์ธ์ฝ”๋”ฉ์„ ์œ„ํ•ด utf-8์„ ์‚ฌ์šฉํ•œ๋‹ค.

 

4.1.2 ์ปค์„œ ์ง€์ •

cursor = db.cursor()

์‚ฌ์šฉํ•  cursor๋ฅผ ์„ ์–ธ.

 

4.1.3 sql๋ฌธ ์ž‘์„ฑ

# DB ์‚ฝ์ž…(INSERT)
sql = 'INSERT INTO [TABLE_NAME] VALUES (...);'

# DB ๊ฒ€์ƒ‰(SELECT)
sql = 'SELECT * FROM [TABLE_NAME]'

# DB ์‚ญ์ œ(DELETE)
sql = 'DELETE FROM [TABLE_NAME]'

# SQL๋ฌธ ์‹คํ–‰
cursor.execute(sql)
db.commit()

์ผ๋ฐ˜ sql๋ฌธ์„ ์ž‘์„ฑํ•ด์ฃผ๋“ฏ์ด ๋ฌธ์ž์—ด ๋ณ€์ˆ˜์— ํ•„์š”ํ•œ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•œ ๋’ค, cursor.execute(sql)์„ ํ†ตํ•ด sql๋ฌธ์„ ์‹คํ–‰์‹œ์ผœ์ค€๋‹ค.

๐Ÿ”— SQL - 1. ๋ฐ์ดํ„ฐ ์ •์˜์–ด(DDL) ์ •๋ฆฌ

๐Ÿ”— SQL - 2. ๋ฐ์ดํ„ฐ ์กฐ์ž‘์–ด(DML) ์ •๋ฆฌ

๐Ÿ”— SQL - 3. ๋ฐ์ดํ„ฐ ์ œ์–ด์–ด(DCL) ์ •๋ฆฌ

์ด ๋•Œ, ๋ฐ์ดํ„ฐ๋‚˜ ํ…Œ์ด๋ธ”์˜ ์ƒ์„ฑ/์‚ญ์ œ/์ˆ˜์ • ๋“ฑ์˜ ๋ณ€๊ฒฝ์ด ํ•„์š”ํ•œ ์—ฐ์‚ฐ์ด ์žˆ์„ ๊ฒฝ์šฐ ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ ์šฉํ•ด์ฃผ๊ธฐ ์œ„ํ•ด โ€ผ๏ธ๊ผญโ€ผ๏ธ db.commit()์„ ์ ์–ด์ค€๋‹ค.

 

4.1.4 ๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ

result = cursor.fetchall()

SELECT๋ฌธ์„ ํ†ตํ•ด DB๋ฅผ ๊ฐ€์ ธ์˜ค๊ณ  ์‹ถ์œผ๋ฉด cursor.fetchall()์„ ํ†ตํ•ด ํŠœํ”Œ๋“ค์˜ ๋ฆฌ์ŠคํŠธ ํ˜•ํƒœ๋กœ ๋ฐ˜ํ™˜๋ฐ›์„ ์ˆ˜ ์žˆ๋‹ค.

- cursor.fetchall() : ๊ฒฐ๊ณผ๋ฅผ ๋ชจ๋‘ ๊ฐ€์ ธ์˜ด

- cursor.fetchmany(size=n) : n๊ฐœ์˜ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ€์ ธ์˜ด

- cursor.fetchone() : ๊ฒฐ๊ณผ๋ฅผ ํ•˜๋‚˜ ๊ฐ€์ ธ์˜ด

 

4.1.5 ์—ฐ๊ฒฐ ์ข…๋ฃŒ

db.close()

 

+ ์ „์ฒด ์ฝ”๋“œ ์˜ˆ์‹œ

import pymysql

db = pymysql.connect(
     	host='127.0.0.1',
     	user='root',
     	passwd='pwd',
     	db='databases',
     	charset='utf8',
     	port=3306
     )
cursor = db.cursor()

sql = '''
      SELECT TERM_IDX FROM TERM_DIC
      WHERE TERM LIKE %s
      '''
cursor.execute(sql, j)
idx = cursor.fetchall()

db.commit()
db.close()
Comments