SQLite β Zero Setup
Python
import sqlite3
conn = sqlite3.connect("myapp.db")
conn.row_factory = sqlite3.Row
cursor = conn.cursor()
cursor.execute('''
CREATE TABLE IF NOT EXISTS users (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
email TEXT UNIQUE NOT NULL
)
''')
cursor.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Alice", "alice@example.com"))
conn.commit()
cursor.execute("SELECT * FROM users WHERE name = ?", ("Alice",))
user = cursor.fetchone()
print(dict(user))
conn.close()Context Manager Pattern
Python
from contextlib import contextmanager
@contextmanager
def get_db(path="myapp.db"):
conn = sqlite3.connect(path)
conn.row_factory = sqlite3.Row
try:
yield conn
conn.commit()
except Exception:
conn.rollback()
raise
finally:
conn.close()
with get_db() as db:
db.execute("INSERT INTO users (name, email) VALUES (?, ?)", ("Bob", "bob@example.com"))
users = db.execute("SELECT * FROM users").fetchall()SQLAlchemy ORM
Python
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.orm import DeclarativeBase, Session
engine = create_engine("sqlite:///myapp.db")
class Base(DeclarativeBase):
pass
class User(Base):
__tablename__ = "users"
id = Column(Integer, primary_key=True)
name = Column(String, nullable=False)
email = Column(String, unique=True, nullable=False)
Base.metadata.create_all(engine)
with Session(engine) as session:
user = User(name="Charlie", email="charlie@example.com")
session.add(user)
session.commit()
all_users = session.query(User).all()
charlie = session.query(User).filter_by(name="Charlie").first()
charlie.email = "new@example.com"
session.commit()Tip: Use sqlite3 for small apps. Switch to SQLAlchemy + PostgreSQL for concurrent writes or production scale.