Using Python's built-in sqlite3 module is one of the most efficient ways to handle local data storage. When moving from basic tutorials to real-world applications, you will often need to execute "fixed" queries—SQL statements where certain criteria are hardcoded or passed as safe, immutable parameters to prevent common security risks like SQL injection.

conn.commit() conn.close() print("Tables created successfully!")

# Update user db.update_user_age("alice", 29)

for row in rows: # row is a tuple: (id, name, email) user_id = row[0] name = row[1] # Thanks to text_factory, this is a clean <class 'str'> email = row[2]

print(row)

# Fetch all results results = cursor.fetchall()