[Python/SQL] PyMySQL - 기본 코드 흐름

2021. 8. 23. 20:0003. Resources/Python

728x90
반응형

pymysql 패키지를 이용해서 작업을 하다보면 코드에 템플릿이 있다는걸 알 수 있다.

먼저 전체 흐름을 보자.

# 코드 전체 흐름

import pymysql # 고정

conn = pymysql.connect(host="", user="", password="",charset="utf8",...) # 가변

cursor = conn.cursor() # 고정

sql = "SQL COMMAND" # 가변

cursor.execute(sql, (args)) # 가변
res = cursor.fetchall() # 가변

conn.commit() # 가변
conn.close() # 고정

위의 코드에서 몇 개는 고정 으로, 몇 개는 가변 으로 주석을 달아뒀는데, 위에서 부터 한 줄씩 그 이유에 대해서 알아보자.

import pymysql

  • 패키지를 파이썬에서 사용한다고 선언하는 부분이기 때문에 얘는 무조건 고정이다.

conn = pymysql.connect(host="", user="", password="",charset="utf8",...)

  • mysql과 작업 중인 파이썬 스크립트를 연결하는 부분이다.
  • mysql에서 접근하고자 하는 범위에 따라서 argument의 값이 바뀔 수도 있고, 새로운 argument가 추가될 수 있다.

cursor = conn.cursor()

  • pymysql의 connection 객체에서 cursor 객체를 가져오는 부분이다.
  • mysql에 sql 커맨드를 보내기 위한 연결 통로라고 보면 된다. 그래서 얘도 무조건 고정이다.

sql = "SQL COMMAND"

  • 사실 이걸 쓰기 위해서 앞의 다른 작업들이 필요한 것이다.
  • 우리가 원하는 SQL 커맨드를 여기에 입력하면 된다.
  • 문법은 그냥 SQL문법이다.

cursor.execute(sql, (args))

  • 작성한 커맨드에 따라 arguments가 필요할 수 도 있기 때문에 가변이다.

res = cursor.fetchall()

  • 작성한 커맨드에 따라 mysql에서 return을 받아야 하는 경우에 이용한다.
  • fetchall() 뿐 아니라 fetchone(), fetchmany() 등의 커맨드도 있다.

conn.commit()

  • Database에 있는 데이터를 수정하는 커맨드들 (INSERT, UPDATE, DELETE)를 사용한 경우, 변경 사항을 database에 확정지어 반영하기 위해서 사용한다.
  • git으로 생각하면 commit + push 같은 느낌

conn.close()

  • 모든 작업을 마치면 database와의 연결을 닫아야하니까 close() 커맨드를 쓴다.
  • 그래서 얘도 고정이다.

어떤 커맨드를 쓰느냐, 어디까지 접근하느냐에 따라서 많은 것들이 변한다.

잘 신경써서 코드를 작성해보자!

반응형