Recent Posts
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- PyQt5
- 엘라스틱넷
- bargraph
- 청산원함
- mask2coco
- 프로그래머스
- 다중 회귀
- mask2cocojson
- stacking
- 로지스틱 회귀
- MaskRCNN_colab
- Python
- 모델 성능 최적화
- 회귀 평가 지표
- RMSLE
- 객체 성능 평가 지표
- MaskRCNN환경구성
- seaborn.barplot
- spleeter
- MSLE
- MaskRCNN환경구축
- stratified k-fold
- mmdetection
- 기사단원의무기
- docker
- flask모델서빙
- bcss
- 피처 스케일링
- rogistic regression
- MaskRCNN코랩
- Today
- Total
노트와 노트
Python을 사용하여 Mysql Database에 접근하기 본문
다양한 라이브러리들이 존재하지만, 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')
'Programming > Python' 카테고리의 다른 글
Python 워드 클라우드, 막대 그래프로 단어 빈도수 분석 (0) | 2021.12.29 |
---|---|
Python PyQT5 프로그램 실행 파일 변환 후 배포하기 (0) | 2021.11.29 |
Pyqt5 오류 메시지 별도로 출력하는 방법 (0) | 2021.11.08 |
Schedule 모듈을 이용해 원하는 시간에 Python code 실행시키기 (0) | 2021.11.08 |
파이썬 웹 크롤링(Python Web Crawling) (1) - robots.txt & 웹 사이트 이용 약관 확인하기 (0) | 2021.08.30 |