PyMySQL은 MySQL 데이터베이스와 쉽고 원활하게 상호 작용할 수 있도록 도와주는 파이썬 라이브러리입니다.
이번 블로그 포스팅에서 해당 PyMySQL을 이용한 데이터베이스 연결부터 다양한 SQL 쿼리문 실행까지 다루는 방법에 대해 알아보도록 하겠습니다.
1. PyMySQL 모듈 Import
PyMySQL을 사용하기 위해선 모듈을 설치하고 Import 해야 합니다.
pip install pymysql # pymysql 라이브러리 설치
import pymysql # pymysql 라이브러리 불러오기
2. MySQL 데이터베이스에 연결
"pymysql.connect()" 메소드를 사용하여 MySQL 데이터베이스에 대한 연결을 구성합니다.
해당 메소드의 매개변수로는 호스트, 포트, DB사용자, 패스워드, 데이터베이스 이름, 인코딩 방식 등의 매개변수를 지정하여 사용합니다.
db = pymysql.connect(
host='localhost',
port=3306,
user='root',
passwd='your password',
db='your database name',
charset='utf8'
}
3. Cursor 객체 생성
DB와 연결이 설정되면, "cursor()" 메소드를 사용하여 커서 객체를 만들어 SQL 쿼리문을 실행할 수 있습니다.
cursor = db.cursor() # cursor 객체 생성
4. SQL 구문 실행
이전에 생성된 cursor 객체에 "execute()" 메소드를 호출하여 SQL 구문을 실행할 수 있습니다.
sql = """
CREATE TABLE products (
product_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price DECIMAL(10, 2) NOT NULL,
quantity INT DEFAULT 0
)
"""
cursor.execute(sql) # SQL 쿼리문 실행
db.commit() # DB 변경사항 반영
5. 테이블에 데이터 삽입
앞에서 생성한 테이블에 일부 데이터를 삽입해보도록 하겠습니다.
product_data = [
('Product A', 19.99, 10),
('Product B', 29.99, 20),
('Product C', 39.99, 30)
]
insert_sql = "INSERT INTO products (name, price, quantity) VALUES (%s, %s, %s)"
for product in product_data:
cursor.execute(insert_sql, product)
db.commit()
6. 테이블에서 데이터 검색
"fetchall()", "fetchone()", "fetchmany()" 메소드를 사용하여 데이터베이스에서 데이터를 검색할 수 있습니다.
fetchall() 메소드 사용하기
쿼리 결과에서 모든 행을 가져올 수 있습니다.
cursor.execute("SELECT * FROM products")
rows = cursor.fetchall()
for row in rows:
print(row)
fetchone() 메소드 사용하기
한번 쿼리를 실행할 때마다 하나의 행씩 가져옵니다.
cursor.execute("SELECT * FROM products")
row = cursor.fetchone()
while row is not None:
print(row)
row = cursor.fetchone()
fetchmany(size) 메소드 사용하기
size 값에 지정된 수 만큼 행을 가져옵니다.
cursor.execute("SELECT * FROM products")
rows = cursor.fetchmany(2)
while rows:
for row in rows:
print(row)
rows = cursor.fetchmany(2)
7. 테이블의 데이터 업데이트
SQL UPDATE 구문을 사용하여 특정 테이블의 특정 데이터를 업데이트할 수 있습니다.
update_sql = """
UPDATE products
SET price = 24.99
WHERE name = 'Product A'
"""
cursor.execute(update_sql)
db.commit()
8. 테이블에서 데이터 삭제
SQL DELETE 구문을 사용하여 특정 테이블의 특정 데이터를 삭제할 수 있습니다.
delete_sql = "DELETE FROM products WHERE name = 'Product B'"
cursor.execute(delete_sql)
db.commit()
9. 데이터베이스 연결 종료
마지막으로 항상 작업을 끝 마치고 난 후에는 데이터베이스와의 연결을 종료해야 합니다.
db.close() # 데이터베이스 연결 종료
PyMySQL 을 다른 RDBMS에서 사용할 수 있는가?
PyMySQL은 MySQL 용으로 설계된 것이므로 다른 데이터베이스의 경우 다른 라이브러리를 사용하여 데이터베이스를 제어할 수 있다. PostgreSQL의 경우 psycopg, SQLite의 경우 sqlite3 와 같은 라이브러리를 사용할 수 있다.
'Programming > Python' 카테고리의 다른 글
[Python] 파이썬을 사용한 웹 크롤링(웹 스크래핑) (requests, bs4, find, CSS Selector) (1) | 2024.05.10 |
---|---|
[Python] 파이썬 예외 처리 방법 (try, except, else, finally) (0) | 2024.05.06 |
[Python] 파이썬 For 문을 사용한 반복문 및 제어문 익히기(for, break, continue, pass) (0) | 2024.04.27 |
[Python] 파이썬 조건문 익히기(if-elif-else) (0) | 2024.04.27 |
[Python] 파이썬에서 사용되는 자료 구조(딕셔너리/사전) (0) | 2024.04.23 |