sqlite3 — SQLite 데이터베이스용 DB-API 2.0 인터페이스

sqlite3 — SQLite 데이터베이스용 DB-API 2.0 인터페이스

소스 코드: Lib/sqlite3/

sqlite3 모듈은 PEP 249에서 설명한 DB-API 2.0 사양을 준수하는 SQLite 데이터베이스에 대한 SQL 인터페이스를 제공합니다.

출처: Python documentation

본문

SQLite는 경량의 디스크 기반 데이터베이스입니다. 별도의 서버 프로세스가 필요하지 않으며 표준 SQL을 사용하여 데이터베이스에 접근할 수 있습니다. 데이터베이스는 하나의 파일에 저장됩니다.

사용법

SQLite 데이터베이스를 사용하려면 먼저 데이터베이스에 대한 연결을 만들고, 그 연결로부터 커서 객체를 만든 다음, 커서를 사용하여 SQL 문을 실행합니다.

import sqlite3

# Connect to a database (or create it)
con = sqlite3.connect("example.db")

# Create a cursor
cur = con.cursor()

# Execute an SQL statement
cur.execute("CREATE TABLE IF NOT EXISTS stocks (symbol text, price real)")

# Insert a row
cur.execute("INSERT INTO stocks VALUES (?, ?)", ("AAPL", 123.45))

# Commit the transaction
con.commit()

# Query
for row in cur.execute("SELECT * FROM stocks"):
    print(row)

# Close the connection
con.close()

with 문을 사용하여 연결을 관리할 수도 있습니다.

import sqlite3

with sqlite3.connect("example.db") as con:
    cur = con.cursor()
    cur.execute("CREATE TABLE IF NOT EXISTS stocks (symbol text, price real)")
    con.commit()

모듈 함수

  • *sqlite3.connect(database, timeout=5.0, detect_types=0, isolation_level='', check_same_thread=True, factory=Connection, cached_statements=128, uri=False, , autocommit=sqlite3.LEGACY_TRANSACTION_CONTROL) — SQLite 데이터베이스 파일에 대한 연결을 엽니다. database는 경로 또는 ":memory:"일 수 있습니다.
  • sqlite3.complete_statement(sql)sql 문이 완료된 문이면 True를 반환합니다.
  • sqlite3.register_adapter(type, adapter) — 사용자 정의 Python 타입과 SQLite 타입 간의 변환을 위한 어댑터를 등록합니다.
  • sqlite3.register_converter(typename, converter) — SQLite 타입과 Python 타입 간의 변환을 위한 변환기를 등록합니다.
  • sqlite3.enable_callback_tracebacks(flag) — 사용자 정의 함수와 어댑터에서 발생한 예외의 traceback을 활성화하거나 비활성화합니다.

Connection 객체

connect()가 반환하는 Connection 객체는 다음과 같은 메서드와 속성을 가집니다.

  • cursor(factory=Cursor) — 커서 객체를 반환합니다.
  • execute(sql, parameters=()) — SQL 문을 실행하는 편의 메서드. 짧은 실행에 유용합니다.
  • executemany(sql, parameters) — 모든 매개변수 시퀀스에 대해 SQL 문을 실행합니다.
  • executescript(sql_script) — 여러 SQL 문을 포함하는 스크립트를 실행합니다.
  • commit() — 보류 중인 트랜잭션을 데이터베이스에 커밋합니다.
  • rollback() — 보류 중인 트랜잭션을 롤백합니다.
  • close() — 데이터베이스 연결을 닫습니다.
  • total_changes — 연결이 열린 이후 변경된 행 수.
  • isolation_level — 격리 수준을 나타내는 속성.
  • row_factory — 행을 표현하는 방식을 제어하는 속성.
  • total_changes — 변경된 행 수.
  • *create_function(name, narg, func, , deterministic=False) — 사용자 정의 SQL 함수를 만듭니다.
  • create_aggregate(name, n_arg, aggregate_class) — 사용자 정의 집계 함수를 만듭니다.
  • create_collation(name, callable) — 사용자 정의 정렬(collation)을 만듭니다.
  • interrupt() — 실행 중인 쿼리를 중단합니다.
  • set_authorizer(authorizer_callback) — 데이터베이스 접근을 제어하는 승인자를 설정합니다.
  • *backup(target, , pages=-1, progress=None, name='main', sleep=0.250) — 데이터베이스를 다른 파일로 백업합니다.

Cursor 객체

Connection.cursor()가 반환하는 Cursor 객체는 다음과 같은 메서드와 속성을 가집니다.

  • execute(sql, parameters=()) — SQL 문을 실행합니다.
  • executemany(sql, parameters) — 매개변수 시퀀스에 대해 SQL을 반복 실행합니다.
  • executescript(sql_script) — SQL 스크립트를 실행합니다.
  • fetchone() — 결과 집합에서 다음 행을 가져옵니다. 행이 없으면 None을 반환합니다.
  • fetchmany(size=cursor.arraysize) — 결과 집합에서 다음 크기만큼의 행을 가져옵니다.
  • fetchall() — 결과 집합의 모든 행을 가져옵니다.
  • close() — 커서를 닫습니다.
  • rowcount — 마지막 문이 변경한 행 수(또는 SELECT의 행 수).
  • lastrowid — 마지막으로 삽입된 행의 row ID.
  • arraysizefetchmany()가 반환하는 기본 행 수.
  • description — 마지막 쿼리의 열 정보.
  • connection — 이 커서를 만든 연결에 대한 참조.

Row 객체

row_factorysqlite3.Row로 설정되면 행은 사전처럼 이름으로 열에 접근할 수 있습니다.

con.row_factory = sqlite3.Row
cur = con.cursor()
row = cur.execute("SELECT * FROM stocks").fetchone()
print(row["symbol"])

날짜와 시간

SQLite는 기본적으로 날짜와 시간 타입이 없습니다. sqlite3 모듈은 datetime 객체를 기본적으로 처리합니다.

타입 변환

detect_types=sqlite3.PARSE_DECLTYPESPARSE_COLNAMES 플래그를 사용하여 열 선언 타입과 이름에 따라 자동 타입 변환을 활성화할 수 있습니다.

더 알아보기 (Learn more)