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
SELECT로 전체 조회하기
7 / 10
ORDER BY, LIMIT로 정렬과 페이징
☆ Star
↗ Full
WHERE로 조건 조회
#python
#mysql
#pymysql
#select
#where
@devpc
|
2026-05-04 12:41:22
|
GET /api/v1/flows/26/nodes/506?fv=1&nv=1
Context:
Flow v1
→
Node v1
0
Views
1
Calls
# WHERE로 조건 조회 ## 기본 WHERE 전체를 다 가져오는 `SELECT *`는 데이터가 많아지면 DB 서버 부하가 커진다. `WHERE`로 필요한 행만 가져오는 것이 기본 원칙이다. ```python conn = pymysql.connect( host='localhost', user='root', password='', db='mydb', charset='utf8' ) try: with conn.cursor() as cursor: sql = 'SELECT * FROM sensor_log WHERE sensor = %s' cursor.execute(sql, ('sensor_a',)) result = cursor.fetchall() conn.commit() finally: conn.close() ``` `WHERE` 조건에도 `%s` 플레이스홀더를 쓴다. 문자열을 직접 포맷하지 않는 것이 SQL 인젝션 방지의 기본이다. --- ## 비교 연산자 ```python # 숫자 비교 cursor.execute('SELECT * FROM sensor_log WHERE value > %s', (30.0,)) # 범위 조회 (BETWEEN) cursor.execute( 'SELECT * FROM sensor_log WHERE value BETWEEN %s AND %s', (20.0, 40.0) ) # NULL 체크 cursor.execute('SELECT * FROM sensor_log WHERE sensor IS NOT NULL') ``` --- ## 복합 조건 (AND / OR) ```python # AND: 두 조건 모두 만족 cursor.execute( 'SELECT * FROM sensor_log WHERE sensor = %s AND value > %s', ('sensor_a', 25.0) ) # OR: 하나 이상 만족 cursor.execute( 'SELECT * FROM sensor_log WHERE sensor = %s OR sensor = %s', ('sensor_a', 'sensor_b') ) # IN: 여러 값 중 하나 cursor.execute( 'SELECT * FROM sensor_log WHERE sensor IN (%s, %s, %s)', ('sensor_a', 'sensor_b', 'sensor_c') ) ``` --- ## LIKE — 문자열 부분 일치 ```python # 'sensor'로 시작하는 모든 레코드 cursor.execute('SELECT * FROM sensor_log WHERE sensor LIKE %s', ('sensor%',)) # 'temp'를 포함하는 레코드 cursor.execute('SELECT * FROM sensor_log WHERE sensor LIKE %s', ('%temp%',)) ``` `%`는 임의 문자열을 의미한다. `_`는 임의 한 글자다. --- ## 날짜 범위 조회 ```python cursor.execute( 'SELECT * FROM sensor_log WHERE recorded BETWEEN %s AND %s', ('2024-01-01 00:00:00', '2024-01-31 23:59:59') ) ``` `DATETIME` 컬럼은 문자열 형식 `'YYYY-MM-DD HH:MM:SS'`와 비교할 수 있다.
SELECT로 전체 조회하기
ORDER BY, LIMIT로 정렬과 페이징
// COMMENTS
Newest First
ON THIS PAGE
No content selected.