( 설치 )
pip install pymysql
( DB연결 ) _MySQL
connection = pymysql.connect(
host='your_host', # 데이터베이스 서버의 호스트 (예: 'localhost' 또는 IP 주소)
user='your_username', # MySQL 사용자 이름
password='your_password', # MySQL 사용자 비밀번호
db='your_database', # 연결할 데이터베이스 이름
charset='utf8mb4', # 인코딩 설정
cursorclass=pymysql.cursors.DictCursor # 결과를 딕셔너리 형식으로 반환
)
[ cursor ]
데이터베이스와 상호작용을 담당하는 인터페이스.
- execute() : SQL 쿼리 실행 메소드. cursor.execute(sql, parameters)
- executemany() : 다수의 SQL 쿼리문 한번에 실행. cursor.executemany(sql, param_list)
- fetchall() : 실행한 쿼리의 모든 결과를 list로 반환. cursor.fetchall()
- fetchone() : 실행한 쿼리 결과에서 하나의 행을 반환 / 없는경우 None 반환. cursor.fetchone()
- fetchmany() :실행한 쿼리 결과에서 최대 n개의 행을 반환. cursor.fetchmanu(size=5)
- close() : 객체 닫기. (DB연결해제) cursor.close()
-commit() : 실제 DB에 반영. (INSERT, UPDATE, DELETE) connection.commit()
- rollback() : 문제 발생 시 DB변경사항 취소. (트랜잭션 _ INSERT, UPDATE, DELETE ) connection.rollback()
( 쿼리실행 )
- SELECT
try:
with connection.cursor() as cursor: # 커서를 열고, with 블록을 벗어나면 자동으로 닫힘
sql = "SELECT * FROM your_table WHERE condition = %s"
cursor.execute(sql, ('value',))
result = cursor.fetchall() # 결과 가져오기
for row in result:
print(row)
finally:
connection.close() # 연결 종료
=> ('value', ) : cursor.execute()는 튜플형태로 전달해야 하기 때문에, 단일값인 value를 튜플 형태로 전달.
- INSERT
cursor = connection.cursor()
try:
sql = "INSERT INTO your_table(col1, col2) VALUES(%s, %s)"
values = ('val1', 'val2')
cursor.execute(sql, values)
# 영향받은 행(row) 수를 rowcount로 확인
result = cursor.rowcount
connection.commit() # 트랜잭션 확정
except Exception as e:
connection.rollback() # 오류 발생 시 롤백하여 변경 사항 취소
finally:
cursor.close() # 수동으로 커서 닫기
connection.close()
=> cursor.rowcount : 쿼리 실행 이후 영향받은 레코드 수를 반환. (1 : 성공 / 0 : 실패 or 영향X)
'Python > 공부공부' 카테고리의 다른 글
[Python] 웹 프레임워크 (Django, Flask, FastAPI, Sanic 등..) (0) | 2024.10.14 |
---|---|
[Python] zfill() _ 문자열채우기 (날짜/시간 표현) (0) | 2024.07.26 |
[Python] dictionary 타입 get 메소드 / KeyError (0) | 2024.07.12 |
[Python] datetime 날짜/시간 모듈 (fromtimestamp(), utcfromtimestamp()) (0) | 2024.07.04 |
[Python] 문자열 포매팅 ( str.format(), f-string, """ ) (0) | 2024.07.03 |