본문 바로가기
C.W.K.
Stream
Lesson 01 of 10 · published

시작하기 — import sqlite3

~12 min · python, sqlite3, stdlib

Level 0Scout
0 XP0/80 lessons0/10 achievements
0/120 XP to next level120 XP to go0% complete

이미 깔려 있고, 이미 쓸 만해

Python은 sqlite3를 표준 라이브러리에 담아서 줘. pip install도 필요 없고 의존성을 더 걸 것도 없어. CPython과 함께 오는 C SQLite 라이브러리를 감싼 물건이야.

가장 짧은 사용법은 이래.

import sqlite3
conn = sqlite3.connect('myapp.db')
conn.execute('CREATE TABLE IF NOT EXISTS notes(id INTEGER PRIMARY KEY, body TEXT)')
conn.execute('INSERT INTO notes(body) VALUES (?)', ('hello',))
conn.commit()
for row in conn.execute('SELECT * FROM notes'):
    print(row)
conn.close()

돌아가긴 해. 하지만 알아야 할 걸 거의 다 건너뛰었지. 남은 아홉 lesson이 그 빈칸을 채워. 먼저 확인할 것부터 보자.

  • sqlite3.sqlite_version — 안에 들어 있는 libsqlite 버전이야. 시스템 CLI보다 오래된 경우가 많아.
  • sqlite3.version — Python 모듈 자체의 버전이야. 덜 흥미로워.
  • conn.row_factory = sqlite3.Row — row를 dict처럼 다루게 해줘. py05에서 제대로 다뤄.
Tip: CLI의 sqlite3가 Python이 품은 libsqlite보다 훨씬 새롭다면 pysqlite3-binary를 깔고 그걸 import해. API는 그대로인데 엔진만 새것이라 STRICT나 JSONB 같은 게 다 돌아가.

Code

Hello, sqlite3·python
import sqlite3
print('libsqlite:', sqlite3.sqlite_version)
print('module:   ', sqlite3.version)

conn = sqlite3.connect(':memory:')
conn.execute('CREATE TABLE t(id INTEGER PRIMARY KEY, v TEXT)')
conn.execute('INSERT INTO t(v) VALUES (?)', ('hello',))
conn.commit()
print(conn.execute('SELECT * FROM t').fetchall())
conn.close()

External links

Exercise

네 Python이 품은 libsqlite가 이 quest에서 쓰는 기능을 받아주는지 확인해봐. STRICT는 3.37, RETURNING은 3.35, JSONB는 3.45부터야. 안 되면 pysqlite3-binary를 깔고 버전을 다시 봐. 그다음 열 줄짜리 스크립트를 써. DB를 만들고, STRICT 테이블을 만들고, row를 넣고, 꺼내오면 돼.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.