import sqlite3
con = sqlite3.connect("clubs.db") # creates the file if needed
cur = con.cursor()
cur.execute("DROP TABLE IF EXISTS members")
cur.execute("""CREATE TABLE members (
id INTEGER PRIMARY KEY,
name TEXT NOT NULL,
grade INTEGER,
club TEXT)""")
people = [("Amara", 12, "Robotics"), ("Ben", 11, "Chess"),
("Chloé", 12, "Chess"), ("Dev", 10, "Robotics")]
cur.executemany("INSERT INTO members (name, grade, club) VALUES (?, ?, ?)", people)
con.commit()
club = "Chess"
for (name,) in cur.execute("SELECT name FROM members WHERE club = ? ORDER BY name", (club,)):
print(name)
print(cur.execute("SELECT club, COUNT(*), AVG(grade) FROM members GROUP BY club").fetchall())
con.close()
A small SQLite database, built into Python. CREATE TABLE defines columns and types, INSERT adds rows, commit saves them to the file, and SELECT asks questions. The ? placeholders pass values safely (see Example 2). Output, line by line: Ben | Chloé | [('Chess', 2, 11.5), ('Robotics', 2, 11.0)]