Programming/Python
Python을 사용하여 Mysql Database에 접근하기
gellygelly
2021. 11. 9. 20:53
다양한 라이브러리들이 존재하지만, pymysql 라이브러리를 이용해서 데이터베이스에 연결하고 데이터를 조작해보았다.
DB 연동하는 코드는 한 번 작성해두면 정말 편리해서 매번 찾아볼 수고를 덜기 위해 작성했다~
1) pymysql 라이브러리 설치
pip install pymysql
2) DB 연결 및 cursor 설정
connect() 함수를 이용해 host의 DB와 연결한다. 본인이 연결할 DB에 맞게 정보를 입력해서 텍스트 형태로 인자를 넘겨주면 된다.
cursor()는 연결할 DB의 fetch 동작을 관리하는 데 사용된다. 아래 코드처럼 기본 형태로 넘겨주게 되면 튜플 형태로 결과를 리턴해 준다.
conn = pymysql.connect(host='hostname', user='username', password='your_password', charset='utf8')
cursor = conn.cursor()
만약, 튜플이 아닌 딕셔너리 형태로 결과를 받고 싶다면 아래처럼 DictCursor를 지정해주면 된다.
cursor = juso_db.cursor(pymysql.cursors.DictCursor)
3) SQL문 실행 및 결과 받아오기
execute()문을 통해 작성한 sql문을 실행하고, fetchall() 함수를 통해 실행 결과를 모두 받아올 수 있다.
self.cursor.execute(sql) # sql문 실행
result = self.cursor.fetchall() # 결과 전부 받아오기
#print(result)
self.conn.commit() # 데이터 삽입/삭제/수정 시 sql문 실행 결과 DB에 적용!
결과를 받아올 때, 아래 함수 목록을 보고 원하는 함수를 사용하면 될 것 같다.
함수명 | 설명 |
fetchall() | 리턴된 모든 행(결과)를 받아옴 |
fetchone() | 한 번 호출에 하나의 행만 받아옴 |
fetchmany(n) | n개만큼의 행만 받아옴 |
4) 전체 코드
# MySQL connect
import pymysql
class connectDB(object):
conn = pymysql.connect(host='host', user='user', password='your_password', charset='utf8') #db 연결
cursor = conn.cursor() #cursor 객체 생성
def runSQL(self, sql):
self.cursor.execute(sql) # SQL문 실행
result = self.cursor.fetchall() # SQL문 실행 결과 받아옴
#print(result)
#self.conn.commit() # SQL문 실행 결과 DB에 적용
return result
if __name__ == "__main__":
dbb = connectDB()
sql = "select * from `mydb`.`coatItemTable`;" # `DB명`.`테이블명`
dbb.runSQL(sql)
sql문에서 `mydb`.`coatItemTable`로 DB명과 테이블명을 모두 명시해줬는데, connect() 함수에서 인자로 db='db명'을 넘기면 db명을 생략해도 된다.
conn=pymysql.connect(host='host', user='user', password='your_password', db='mydb', charset='utf8')