티스토리 뷰

Python

Python DB 연결 방법

열코 2026. 5. 28. 13:25
반응형

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

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2026/06   »
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
글 보관함
반응형