본문 바로가기

TIL/SQL

[Python] SQLite3 모듈 사용하기

SQLite3 모듈이란?

파이썬에서 서버 없이 로컬에서 파일로 DB를 관리할 수 있는 SQLite를 다룰 수 있는 모듈

경량화 되어 있어서 많은 소프트웨어에서 내장 DB로 많이 사용된다.

 

SQLite3 모듈 기능

SQLite DB 생성 및 연결

SQL 쿼리 실행

데이터 검색, 추가, 수정, 삭제

트랜잭션 처리

 

SQLite3는 별도의 설치 필요없이 import를 하면 사용할 수 있다.

import sqlite3

 

 

sqlite3.connect()

sqlite3.connect() 함수는 DB에 연결하는 함수이다.

이 함수를 통해 DB 파일에 접속하고, 연결된 Connection 객체를 반환한다.

 

 database : 연결할 SQLite DB 파일의 경로

 timeout : 연결 시도 시간 초과 시간 (default = 5s)

 detect_types : 데이터 타입 자동 감지 여부 (default = 0)

 isolation_level : 트랜잭션 격리 레벨 설정

 check_same_thread : 스레드 간 동시 접근 허용 여부

 factory : 커서 캐시 크기

 

example)

sqlite3.conntect(database, timeout=5.0, dect_types=0, isolation_level=None, check_same_thread=True)

 

 

sqlite3.cursor.execute()

cursor.execute() 함수는 SQL 쿼리를 실행하는 메서드이다.

이 함수를 사용하여 DB에서 데이터를 조회, 삽입, 수정, 삭제 등의 작업을 수행할 수 있다.

cursor.excute(sql_query, (parameters))

 

ㆍsql_query : 실행할 SQL 쿼리

ㆍparameters : SQL 쿼리에 전달할 매개변수

 

cursor.execute() 함수는 SQL 쿼리에 변수를 전달하는 기능도 제공한다.

SQL 쿼리 안에 ?를 넣어 변수 위치를 표시하고, execute() 함수의 두 번째 파라미터로 매개변수를 전달한다.

이때 매개변수는 튜플 형태로 전달한다.

 

example)

cursor.execute("INSERT INTO posts (title, content, date) VALUES (?, ?, ?)", (title, content, date))

cursor.execute("UPDATE posts SET title = ?, content = ? WHERE id = ?", (title, content, post_id))

 

 

DB 연결을 종료하기 전에 반드시 commit() 메서드를 통해 변경 내용을 저장해야 함.

from flask import Flask, request, redirect, render_template
import sqlite3
from datetime import datetime
app = Flask(__name__)

now = datetime.now()
date = now.strftime('%Y-%m-%d %H:%M') 
DATABASE = 'database.db'

def create_table():
    conn = sqlite3.connect(DATABASE)
    cur = conn.cursor()
    cur.execute('''
        CREATE TABLE IF NOT EXISTS posts (
            id INTEGER PRIMARY KEY AUTOINCREMENT,
            title TEXT NOT NULL,
            content TEXT NOT NULL,
            date TEXT NOT NULL
        )
    ''')
    conn.commit()
    conn.close()

'TIL > SQL' 카테고리의 다른 글

SQL DB & NoSQL DB  (1) 2024.03.29
SQL 기본 문법(SELECT, WHERE, GROUP BY, ORDER BY, IF, CASE)  (0) 2024.03.25
SQL DATE_FORMAT  (0) 2024.03.25