티스토리 뷰
반응형
Python 에서는 데이터베이스(DB)와 연결하여 데이터를 저장하거나 조회할 수 있습니다.
대표적으로:
- 회원 정보 저장
- 게시판 데이터 조회
- 로그인 처리
- 통계 데이터 관리
등에 사용됩니다.
Python에서 사용하는 대표 DB 종류
| MySQL | 가장 대중적 | 웹 서비스 |
| MariaDB | MySQL 호환 | Linux 서버 |
| PostgreSQL | 기능 강력 | 대규모 서비스 |
| SQLite | 설치 불필요 | 테스트/로컬 |
| Oracle Database | 기업용 | 금융/공공 |
| MongoDB | JSON 기반 | 로그/빅데이터 |
Python DB 연동 방식
보통 아래 순서로 진행합니다.
1. DB 드라이버 설치
2. DB 연결(Connection)
3. SQL 실행
4. 결과 조회
5. 연결 종료
SQLite 연동
SQLite 특징
SQLite 는:
- 별도 설치 필요 없음
- Python 기본 포함
- 테스트용으로 많이 사용
SQLite 연결
import sqlite3
conn = sqlite3.connect("test.db")
print("DB 연결 완료")
실행 시:
test.db
파일 생성됨.
테이블 생성
import sqlite3
conn = sqlite3.connect("test.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS member (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
conn.commit()
print("테이블 생성 완료")
데이터 저장(INSERT)
cursor.execute(
"INSERT INTO member(name, age) VALUES (?, ?)",
("홍길동", 30)
)
conn.commit()
데이터 조회(SELECT)
cursor.execute("SELECT * FROM member")
rows = cursor.fetchall()
for row in rows:
print(row)
결과 예시:
(1, '홍길동', 30)
데이터 수정(UPDATE)
cursor.execute(
"UPDATE member SET age=? WHERE name=?",
(35, "홍길동")
)
conn.commit()
데이터 삭제(DELETE)
cursor.execute(
"DELETE FROM member WHERE name=?",
("홍길동",)
)
conn.commit()
DB 연결 종료
conn.close()
MySQL / MariaDB 연동
드라이버 설치
MySQL
MariaDB
연동 시 보통 아래 패키지 사용:
pip install pymysql
MySQL 연결 예제
import pymysql
conn = pymysql.connect(
host="localhost",
user="root",
password="1234",
database="testdb",
charset="utf8"
)
print("DB 연결 완료")
SELECT 조회
cursor = conn.cursor()
cursor.execute("SELECT * FROM member")
rows = cursor.fetchall()
for row in rows:
print(row)
INSERT 저장
sql = "INSERT INTO member(name, age) VALUES(%s, %s)"
cursor.execute(sql, ("김철수", 25))
conn.commit()
PostgreSQL 연동
드라이버 설치
pip install psycopg2
PostgreSQL 연결 예제
import psycopg2
conn = psycopg2.connect(
host="localhost",
dbname="testdb",
user="postgres",
password="1234"
)
print("연결 완료")
Oracle 연동
드라이버 설치
pip install oracledb
Oracle 연결 예제
import oracledb
conn = oracledb.connect(
user="system",
password="1234",
dsn="localhost:1521/XE"
)
print("Oracle 연결 완료")
SQL 실행 순서
일반적인 흐름:
cursor.execute(SQL)
result = cursor.fetchall()
또는:
cursor.execute(SQL)
conn.commit()
commit() 이란?
DB 변경사항 저장.
필수 작업:
- INSERT
- UPDATE
- DELETE
예시:
conn.commit()
실행하지 않으면 저장되지 않을 수 있음.
fetch 종류
함수설명
| fetchone() | 한 건 조회 |
| fetchmany() | 여러 건 조회 |
| fetchall() | 전체 조회 |
SQL Injection 방지
잘못된 방식:
sql = "SELECT * FROM member WHERE id = '" + user_id + "'"
위험:
- SQL Injection 공격 가능
안전한 방식
cursor.execute(
"SELECT * FROM member WHERE id=%s",
(user_id,)
)
자주 발생하는 오류
DB 연결 실패
원인:
- 계정 오류
- 비밀번호 오류
- 포트 차단
- DB 미실행
commit 누락
conn.commit()
누락 시 저장 안 될 수 있음.
close 누락
conn.close()
연결 종료 필요.
DB 연동 전체 예제(SQLite)
import sqlite3
conn = sqlite3.connect("test.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS member (
id INTEGER PRIMARY KEY,
name TEXT,
age INTEGER
)
""")
cursor.execute(
"INSERT INTO member(name, age) VALUES (?, ?)",
("홍길동", 30)
)
conn.commit()
cursor.execute("SELECT * FROM member")
rows = cursor.fetchall()
for row in rows:
print(row)
conn.close()
#Python
#PythonDB연동
#PythonDatabase
#PythonMySQL
#PythonMariaDB
#PythonSQLite
#PythonPostgreSQL
#PythonOracle
#PythonSQL
#PythonDBConnection
'Python' 카테고리의 다른 글
| Python 파일 처리 방법 (0) | 2026.05.31 |
|---|---|
| Python 함수(Function) 정리 (0) | 2026.05.30 |
| Python 반복문(Loop) 정리 (0) | 2026.05.29 |
| Python 조건문(Conditional Statement) 정리 (0) | 2026.05.27 |
| Python 변수(Variable) 정리 (0) | 2026.05.26 |
| Python 설치 방법 (Windows 환경) (0) | 2026.05.25 |
| 내 Python 프로젝트에 OpenAI API를 활용하기 STEP.5 (0) | 2026.05.02 |
| 내 Python 프로젝트에 OpenAI API를 활용하기 STEP.4 (0) | 2026.05.02 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 자료구조
- 파이썬
- 클래스
- C
- Class
- 리스트
- Java
- MySQL
- 상속
- 파일처리
- C++
- 벡터
- 블루투스
- C++ 클래스
- C언어
- 문제풀이
- 알고리즘
- 배열
- c#
- 자바
- 데이터베이스
- 문자열
- String
- OpenCV
- Android
- 정보처리기사
- 아두이노
- html
- DB연동
- 안드로이드
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
글 보관함
반응형
