null
vuild_
Nodes
Flows
Hubs
Login
MENU
GO
Notifications
Login
⌂
Python으로 MySQL 다루기
Structure
connect
•
pymysql 연결 패턴 정리
db-table
•
DB 만들고 지우는 법
•
테이블 생성과 데이터 타입 선택
write
•
INSERT 단일 행 추가
•
다중 행은 executemany로
read
•
SELECT로 전체 조회하기
•
WHERE로 조건 조회
•
ORDER BY, LIMIT로 정렬과 페이징
advanced
•
UPDATE와 DELETE 패턴
•
NaN → None 변환과 에러 처리
Flow Structure
Prev
1 / 10
DB 만들고 지우는 법
☆ Star
↗ Full
pymysql 연결 패턴 정리
#python
#mysql
#pymysql
#connection
#cursor
@devpc
|
2026-05-04 12:41:21
|
GET /api/v1/flows/26/nodes/500?fv=1&nv=1
Context:
Flow v1
→
Node v1
0
Views
1
Calls
# pymysql 연결 패턴 정리 ## 연결의 네 단계 pymysql로 MySQL에 접근하는 흐름은 항상 이 네 단계다. ``` connect → cursor → execute → commit/close ``` 1. `connect` — MySQL 서버에 TCP 연결을 맺는다 2. `cursor` — SQL 명령을 실행할 커서 객체를 만든다 3. `execute` — 쿼리를 실행한다 4. `commit` + `close` — 변경을 확정하고 연결을 닫는다 --- ## 기본 연결 ```python import pymysql conn = pymysql.connect( host='localhost', user='root', password='', charset='utf8' ) cursor = conn.cursor() # ... SQL 실행 ... conn.commit() conn.close() ``` `db` 파라미터를 지정하면 연결 즉시 해당 DB를 사용한다. ```python conn = pymysql.connect( host='localhost', user='root', password='', db='mydb', charset='utf8' ) ``` --- ## context manager 패턴 (권장) `with conn.cursor() as cursor:` 블록을 사용하면 예외 발생 시에도 커서가 자동으로 닫힌다. ```python conn = pymysql.connect( host='localhost', user='root', password='', db='mydb', charset='utf8' ) try: with conn.cursor() as cursor: cursor.execute("SELECT 1") result = cursor.fetchall() conn.commit() finally: conn.close() ``` `try/finally`로 `close`를 보장하는 것이 기본 패턴이다. --- ## 연결 재사용 쿼리마다 연결을 열고 닫으면 오버헤드가 생긴다. 반복 작업에는 연결 하나를 유지하고 커서만 새로 만드는 방식이 좋다. ```python conn = pymysql.connect(host='localhost', user='root', password='', db='mydb', charset='utf8') try: # 첫 번째 작업 with conn.cursor() as cur: cur.execute("INSERT INTO logs (msg) VALUES (%s)", ("start",)) conn.commit() # 두 번째 작업 (같은 conn 재사용) with conn.cursor() as cur: cur.execute("SELECT COUNT(*) FROM logs") count = cur.fetchone()[0] finally: conn.close() ``` --- ## connect 주요 파라미터 | 파라미터 | 설명 | 기본값 | |---------|------|--------| | `host` | MySQL 서버 주소 | `localhost` | | `port` | 포트 번호 | `3306` | | `user` | 계정 이름 | — | | `password` | 비밀번호 | `''` | | `db` | 초기 접속 DB | — | | `charset` | 인코딩 | `utf8` | | `connect_timeout` | 연결 타임아웃(초) | `10` | 한국어 데이터를 저장할 때는 `charset='utf8mb4'`를 쓰는 것이 이모지 포함 문자열에 안전하다.
Prev
DB 만들고 지우는 법
// COMMENTS
Newest First
ON THIS PAGE
No content selected.