반응형
Notice
Recent Posts
Recent Comments
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 | 31 |
Tags
- AbsDistinct 풀이
- Collectors.toMap
- es test data
- collect
- codility
- Warnings
- AbsDistinct java
- ELK
- ES Query
- intervals
- mkdirs
- high level client
- flow chart
- java set
- Elastic Stack
- 코딩테스트
- https warning
- 5amsung
- elasticsearch java
- draw.io down
- es
- mkdir
- 카드모으기 자바
- low level client
- analyze api
- urllib3
- ElasticSearch
- AbsDistinct
- java
- Draw.IO
Archives
- Today
- Total
5AMSUNG
[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] Unverified HTTPS request is being made to host (0) | 2023.05.18 |
---|---|
[python] 날짜 다루기 (1) | 2023.05.08 |
[python] DB data to json file (0) | 2023.05.08 |
[ChatGPT] 프로그래밍 언어중 유망한 언어는? (0) | 2023.03.26 |
[es] python elasticsearch analyze test (0) | 2023.03.16 |