경기도 인공지능 개발 과정/Python

Python pymysql 사용하기

agingcurve 2022. 5. 28. 14:59
반응형

python에서 mysql 이용하기!!

  1. 필요한 모듈을 설치한다.

pip install pymysql

 

In [1]:
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
  2. DB접속 - 접속객체 얻어오기.
  3. 쿼리작성
  4. 쿼리실행
  5. 결과값을 얻어오기
  6. 접속종료!!
In [23]:
#1. 필요한 모듈 import
import pymysql
#2. 접속 
conn = pymysql.connect(host='localhost',port=3306,user='aiuser',password='aipw',db='5')
conn
Out[23]:
<pymysql.connections.Connection at 0x1cc77a70850>
In [24]:
#3. 쿼리 작성  cursor 객체를 이용한다. 
sql = "select * from todos"
#쿼리실행
#Connection 객체로 부터 커서객체얻어오기.
cur = conn.cursor()
#4. 쿼리실행은 Cursor 객체가 한다.
cur.execute(sql)

# 5결과값 얻어오기. 
for row in cur:
    print(row)
(3, '파이썬 공부하기', datetime.datetime(2022, 5, 25, 11, 32, 10), None)
(4, '파이썬 공부하기', datetime.datetime(2022, 5, 25, 11, 45, 31), None)
(6, '점심메뉴 생각하기', datetime.datetime(2022, 5, 25, 12, 27, 1), None)
(7, '봄봄이랑 놀아주기!!', datetime.datetime(2022, 5, 25, 12, 36, 34), None)
(8, '커피마시기', datetime.datetime(2022, 5, 25, 12, 37, 40), None)
In [16]:
rows = cur.fetchall()
print(type(rows))
for row in rows:
    print(row)
<class 'tuple'>
(3, '파이썬 공부하기', datetime.datetime(2022, 5, 25, 11, 32, 10), None)
(4, '파이썬 공부하기', datetime.datetime(2022, 5, 25, 11, 45, 31), None)
In [17]:
#6. DB에 작업이 끝나면 접속을 종료한다.!! 
cur.close()
conn.close()
In [19]:
# todo에 입력!! 

#1.접속
conn = pymysql.connect(host='localhost',port=3306,user='aiuser',password='aipw',db='aidb')
#2.쿼리작성
sql = 'insert into todos (todo) values ("점심메뉴 생각하기")'
#3.쿼리실행
cur = conn.cursor()
result = cur.execute(sql)
#4.결과얻어오기
print(result)
#5.접속종료.
conn.commit()
cur.close()
conn.close()
1
In [35]:
class Todo:
    def __init__(self, todo,no=None, createDate=None,endDate=None):
        self.no = no
        self.todo = todo
        self.createDate = createDate
        self.endDate = endDate

    def showTodoInfo(self):
        print('번호:' , self.no)
        print('할일:' , self.todo)
        print('할일등록일:' , self.createDate)
        print('할일완료일:' , self.endDate)
        print()
    
In [40]:
def find_todo(no):
    conn = pymysql.connect(host='localhost',port=3306,user='aiuser',password='aipw',db='aidb')
    #2.쿼리작성
    sql = 'select * from todos where no = %s'
    #3.쿼리실행
    cur = conn.cursor()
    cur.execute(sql,no)
    #4.결과얻어오기
    row = cur.fetchone()
        #5.접속종료.
   
    cur.close()
    conn.close()
    
    if row != None:
        todo = Todo(row[1],row[0],row[2],row[3])
        return todo
    
        
In [45]:
t = find_todo(6)
t.showTodoInfo()

t.no 

print(t.createDate)
번호: 6
할일: 점심메뉴 생각하기
할일등록일: 2022-05-25 12:27:01
할일완료일: None

2022-05-25 12:27:01
In [46]:
def get_todos():
    conn = pymysql.connect(host='localhost',port=3306,user='aiuser',password='aipw',db='aidb')
    #2.쿼리작성
    sql = 'select * from todos'
    #3.쿼리실행
    cur = conn.cursor()
    cur.execute(sql)
    #4.결과얻어오기
    rows = cur.fetchall()
    #5.접속종료.
    cur.close()
    conn.close()
    todos = []
    for row in rows:
        todo = Todo(row[1],row[0],row[2],row[3])
        todos.append(todo)
    return todos
In [47]:
todo_list = get_todos()

for todo in todo_list:
    todo.showTodoInfo()
번호: 3
할일: 파이썬 공부하기
할일등록일: 2022-05-25 11:32:10
할일완료일: None

번호: 4
할일: 파이썬 공부하기
할일등록일: 2022-05-25 11:45:31
할일완료일: None

번호: 6
할일: 점심메뉴 생각하기
할일등록일: 2022-05-25 12:27:01
할일완료일: None

번호: 7
할일: 봄봄이랑 놀아주기!!
할일등록일: 2022-05-25 12:36:34
할일완료일: None

번호: 8
할일: 커피마시기
할일등록일: 2022-05-25 12:37:40
할일완료일: None

번호: 9
할일: 물마시기
할일등록일: 2022-05-25 14:17:03
할일완료일: None

In [20]:
def add_todo(todo):
    # todo에 입력!! 

    #1.접속
    conn = pymysql.connect(host='localhost',port=3306,user='aiuser',password='aipw',db='aidb')
    #2.쿼리작성
    sql = 'insert into todos (todo) values (%s)'
    #3.쿼리실행
    cur = conn.cursor()
    result = cur.execute(sql,todo)
    #4.결과얻어오기
#     print(result)
    #5.접속종료.
    conn.commit()
    cur.close()
    conn.close()

add_todo('봄봄이랑 놀아주기!!')
1
In [21]:
add_todo('커피마시기')
1
In [25]:
add_todo('물마시기')
1