sqlite3 — SQLite 데이터베이스용 DB-API 2.0 인터페이스
sqlite3 — SQLite 데이터베이스용 DB-API 2.0 인터페이스
소스 코드: Lib/sqlite3/
sqlite3 모듈은 PEP 249에서 설명한 DB-API 2.0 사양을 준수하는 SQLite 데이터베이스에 대한 SQL 인터페이스를 제공합니다.
본문
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.
- arraysize —
fetchmany()가 반환하는 기본 행 수. - description — 마지막 쿼리의 열 정보.
- connection — 이 커서를 만든 연결에 대한 참조.
Row 객체
row_factory가 sqlite3.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_DECLTYPES 및 PARSE_COLNAMES 플래그를 사용하여 열 선언 타입과 이름에 따라 자동 타입 변환을 활성화할 수 있습니다.