[Python]

파이썬 - python에서 mysql 이용하기 (예제: todo list 만들기)

AI gina 2022. 5. 25. 14:06

[python에서 mysql 이용하기]

 

1. 필요한 모듈을 설치한다. (데이터베이스 접속을 위해 mysql에서 제공하는 외부모듈을 설치해서 사용한다)

pip install pymysql

pip install pymysql
Collecting pymysql
  Downloading PyMySQL-1.0.2-py3-none-any.whl (43 kB)
Installing collected packages: pymysql
Successfully installed pymysql-1.0.2
Note: you may need to restart the kernel to use updated packages.

 

프로그래밍 순서!!

  1. DB 모듈 import - import pysql
  2. DB 접속 & 접속객체 얻어오기 - pymysql.connect(host=,port=,user=,password=,db=)
  3. 쿼리작성 (insert into..)
  4. 쿼리실행
  5. 결과값을 얻어오기
  6. 접속종료
#1. 필요한 모듈 import
import pymysql

#2. 접속
conn = pymysql.connect(host='localhost', port=3306, user='aiuser2', password='aipw', db='aidb2') 
conn
<pymysql.connections.Connection at 0x20c975deca0>
#3. 쿼리작성 cursor 객체를 이용한다. 
sql ='select * from todos'

#쿼리실행
#connection 객체로 부터 커서객체 얻어오기.
cur = conn.cursor()
#4. 쿼리실행은 Cursor 객체가 한다.
cur.execute(sql) 

#5. 결과값 얻어오기 (1)
for row in cur:    #반복문으로 값꺼내오기. 커서객체에서 꺼내서 row에 담기.(커서가 이터러블하게 꺼내주도록 함.)
    print(row)
3
#5. 결과값 얻어오기(2)
rows = cur.fetchall()   #커서객체에서 fetchall로 받아오기
print(type(rows))

for row in rows:
    print(row)
<class 'tuple'>
(3, '파이썬 공부하기', datetime.datetime(2022, 5, 25, 11, 32, 23), datetime.datetime(2022, 5, 25, 11, 33, 56))
(4, '복습하기', datetime.datetime(2022, 5, 25, 11, 33, 15), None)
(5, '블로그글쓰기', datetime.datetime(2022, 5, 25, 11, 33, 35), None)
#6. DB에 작업이 끝나면 접속을 종료한다.
cur.close()
conn.close()

 

# todo에 입력하기.

#1. 
conn = pymysql.connect(host='localhost', port=3306, user='aiuser2', password='aipw', db='aidb2')
#2. 쿼리작성
sql = 'insert into todos (todo) values ("점심메뉴 생각하기")'

#3. 쿼리실행 (커서객체로 연결해서 실행)
cur = conn.cursor()   
result = cur.execute(sql)   #커서 객체의 execute 메서드에 쿼리(sql) 넣어줌

#4. 결과얻어오기
print(result)

#5. 접속종료
conn.commit()  #입력, 수정, 삭제할때 커밋해야 DB에 적용된다.
cur.close()
conn.close()
1

 

# 함수나 클래스로 만들기

def add_todo(todo):
    conn = pymysql.connect(host='localhost', port=3306, user='aiuser2', password='aipw', db='aidb2')
    sql = 'insert into todos (todo) values (%s)'  # %s : 문자가 들어옴
    cur = conn.cursor()  #커서 메서드에 입력
    result = cur.execute(sql, todo)  #커서 객체의 execute 메서드에 쿼리(sql)와 변수(todo)를 넣음. # todo는 %s에서 받아줌
#    print(result)
    conn.commit()  #커밋해야함
    cur.close()
    conn.close()
    
add_todo('강아지 산책시키기')
1

 

add_todo('커피마시기')
1

* DBMS인 MySQL Workbench에서 보면, 실제 데이터베이스에 작업 되어 있다.