[MySQL] SQLAlchemy

Hunie_07·2026년 2월 22일

SQL

목록 보기
16/18
post-thumbnail

📌 SQLAlchemy

  • pymysql 과 같이 파이썬을 활용하여 DB 연결이 가능한 라이브러리이다. 간단하게만 살펴보고자 한다.

1️⃣ SQLAlchemy 설치 및 임포트

!pip install sqlalchemy
from sqlalchemy import create_engine

2️⃣ MySQL 연결

  • mysql+pymysql://USER_ID:USER_PW@Host명/DB명
db_conn_str = 'mysql+pymysql://crawluser:********@localhost/crawlDB'
db_conn = create_engine(db_conn_str)
conn2 = db_conn.connect()

3️⃣ 데이터 조회 (SELECT)

from sqlalchemy import Table, select, MetaData
  • customer 테이블 조회
metadata = MetaData()
users = Table('customer', metadata, autoload_with = db_conn)
sql = select(users)
rows3 = conn2.execute(sql)
for row in rows3:
    print(row)

- 출력

(1, '김바람', '010-123-1111', datetime.date(2000, 1, 1))
(2, '남구름', '010-222-1111', datetime.date(2010, 1, 1))
(3, '서바다', '010-321-2111', datetime.date(2001, 5, 1))
(4, '홍하늘', '010-123-1311', datetime.date(2010, 2, 1))
(5, '이방', '010-443-1111', datetime.date(1981, 10, 10))
(6, '성춘향', '010-123-3333', datetime.date(2010, 10, 10))
(7, '이몽룡', '010-444-7777', datetime.date(2009, 5, 10))
(8, '강하늘', '010-777-3333', datetime.date(2011, 10, 10))
(9, '최장군', '010-555-7777', datetime.date(2019, 5, 10))
(10, '성자', '010-123-0099', datetime.date(2001, 3, 10))
(11, '방식', '010-444-7788', datetime.date(2008, 12, 10))
  • 특정 컬럼 조회
  • cColumnCollection 을 뜻한다.
# id 와 name 컬럼 조회
sql = select(users.c.id, users.c.name)
rows = conn2.execute(sql)
for row in rows:
    print(row)

- 출력

(1, '김바람')
(2, '남구름')
(3, '서바다')
(4, '홍하늘')
(5, '이방')
(6, '성춘향')
(7, '이몽룡')
(8, '강하늘')
(9, '최장군')
(10, '성자')
(11, '방식')

4️⃣ 데이터 변경 (UPDATE)

from sqlalchemy import update
  • 기존 MySQL 문에서 UPDATE ... SET ... WHERE 형태로 사용한 것과는 다소 다른 구조이다.
sql = (update(users).where(users.c.id == 1).values(name='김바다'))
result = conn2.execute(sql)
  • id1 인 데이터가 변경된 모습이다.
sql = select(users.c.id, users.c.name)
rows = conn2.execute(sql)
for row in rows:
    print(row)

- 출력

(1, '김바다')
(2, '남구름')
(3, '서바다')
(4, '홍하늘')
(5, '이방')
(6, '성춘향')
(7, '이몽룡')
(8, '강하늘')
(9, '최장군')
(10, '성자')
(11, '방식')

0개의 댓글