import sqlite3conn = sqlite3.connect("myapp.db")cursor = conn.cursor()cursor.execute(""" CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, email TEXT UNIQUE, age INTEGER )""")conn.commit()
CRUD 기본 연산
# Create: 데이터 삽입cursor.execute( "INSERT INTO users (name, email, age) VALUES (?, ?, ?)", ("철수", "cs@example.com", 25))conn.commit()# Read: 데이터 조회cursor.execute("SELECT * FROM users WHERE age >= ?", (20,))rows = cursor.fetchall()for row in rows: print(row)# Update: 데이터 수정cursor.execute( "UPDATE users SET age = ? WHERE name = ?", (26, "철수"))conn.commit()# Delete: 데이터 삭제cursor.execute("DELETE FROM users WHERE name = ?", ("철수",))conn.commit()
conn.row_factory = sqlite3.Rowcursor = conn.cursor()cursor.execute("SELECT * FROM users")for row in cursor.fetchall(): print(f"{row['name']}: {row['email']}")
컨텍스트 매니저로 안전하게
def get_users(min_age=0): with sqlite3.connect("myapp.db") as conn: conn.row_factory = sqlite3.Row cursor = conn.cursor() cursor.execute( "SELECT * FROM users WHERE age >= ? ORDER BY name", (min_age,) ) return [dict(row) for row in cursor.fetchall()]users = get_users(25)for user in users: print(user)