일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- zip 파일 암호화
- docker
- Java
- 파이썬
- high level client
- Kafka
- ELASTIC
- Python
- License
- license delete
- aggs
- analyzer test
- flask
- 차트
- Test
- Mac
- aggregation
- query
- Elasticsearch
- sort
- TensorFlow
- plugin
- matplotlib
- 900gle
- zip 암호화
- MySQL
- token filter test
- licence delete curl
- API
- springboot
Archives
- Today
- Total
개발잡부
[python] mysql 연동 - PyMySQL 본문
반응형
Python의 MySql모듈 설치
- Python의 MySql모듈
- PyMySQL
- mysql-connector-python ( >= MySQL 8.0) or mysql.connector (< MySQL 8.0)
- PyMySQL를 이용하여 접근하는 방법
$ pip install PyMySQL
버전확인
pip3 -V
conda activate text
require.txt 파일에 PyMySQL추가
의존성 주입
pip3 install -r require.txt
RuntimeError: 'cryptography' package is required for sha256_password or caching_sha2_password auth methods
pip install cryptography
Python에서 MySQL 접속 절차
- PyMySql 모듈을 import
- MySQL 연결: pymysql.connect()
- 호스트명, 로그인, 암호, 접속할 DB 등 지정
- DB커서 객체생성: Connection 객체로부터 cursor() 호출
- SQL문 실행
- Cursor객체의 메소드를 사용하여 SQL을 DB서버에 전송 & Fetch
- SQL을 DB서버에 전송: execute()
- Fetch: fetchall(), fetchone(), fetchmany(n)
- Connection 객체의 commit(): 삽입, 갱신, 삭제 (INSERT/UPDATE/DELETE)
- Cursor객체의 메소드를 사용하여 SQL을 DB서버에 전송 & Fetch
- DB 연결 종료: Connection객체의 close()
Python에서 MySQL 접속 예시
# STEP 1
import pymysql
# STEP 2: MySQL Connection 연결
con = pymysql.connect(host='localhost', user='ldh', password='doo',
db='shop', charset='utf8', # 한글처리 (charset = 'utf8')
autocommit=True, # 결과 DB 반영 (Insert or update)
cursorclass=pymysql.cursors.DictCursor # DB조회시 컬럼명을 동시에 보여줌
# STEP 3: Connection 으로부터 Cursor 생성
cur = con.cursor()
# STEP 4: SQL문 실행 및 Fetch
sql = "SELECT goods_name, price FROM goods_text"
cur.execute(sql)
# 데이타 Fetch
rows = cur.fetchall()
print(rows) # 전체 rows
# STEP 5: DB 연결 종료
con.close()
Python에서 MySQL TEST
- Mysql 접속
import pymysql
import pandas as pd
con = pymysql.connect(host='localhost', user='ldh', password='doo',
db='shop', charset='utf8', # 한글처리 (charset = 'utf8')
autocommit=True, # 결과 DB 반영 (Insert or update)
cursorclass=pymysql.cursors.DictCursor # DB조회시 컬럼명을 동시에 보여줌
)
cur = con.cursor()
sql = "select * from goods_text order by id desc limit 10" # goods_text
cur.execute(sql)
rows = cur.fetchall()
con.close() # DB 연결 종료
print(rows)
데이터프레임형태로 변환 Python으로 불러온 테이블을 데이터프레임으로 출력
goods = pd.DataFrame(rows)
데이터 전처리
idx = goods[(goods['keyword'] != 1) & (goods['name'] != 2)].index
goods.drop(idx, inplace=True) #행 제거
goods.loc[goods['keyword'] == 1, 'name'] = '남성' # 1 ==> 남성
goods.loc[goods['keyword'] == 2, 'name'] = '여성' # 2 ==> 여성
데이터 시각화
import plotly.express as px
fig = px.histogram(goods, x="keyword", y="price", color="name", marginal="rug")
fig.show()
반응형
'Python' 카테고리의 다른 글
[python] API 응답시간 확인 (0) | 2023.05.04 |
---|---|
[python] DB data to json file (0) | 2023.04.30 |
[python] kibana 에서 쓰던 쿼리 조회 하기 (0) | 2023.04.21 |
[python] .csv파일 읽어서 sql 문 만들기 (0) | 2023.04.11 |
[python] byte convert size format (0) | 2022.11.17 |
Comments