SQLite best practices for Python -- PRAGMAs per connection, context manager transactions, parameterized queries, row_factory, executemany, FK indexes
92
90%
Does it follow best practices?
Impact
97%
1.73xAverage score across 5 eval scenarios
Passed
No known issues
{
"context": "Tests whether the agent proactively applies SQLite best practices when building a library lending system. The task requires multi-step transactions (checkout: validate + decrement + insert loan; return: update loan + increment copies), foreign key relationships between three tables, and bulk operations. The task never mentions PRAGMAs, WAL mode, context managers, row_factory, or parameterized queries.",
"type": "weighted_checklist",
"checklist": [
{
"name": "WAL mode enabled",
"description": "Connection setup sets PRAGMA journal_mode=WAL",
"max_score": 10
},
{
"name": "Foreign keys ON",
"description": "Connection setup sets PRAGMA foreign_keys=ON per connection -- critical for FK constraints between loans, books, and members",
"max_score": 10
},
{
"name": "Busy timeout set",
"description": "Connection setup sets PRAGMA busy_timeout to a positive value",
"max_score": 6
},
{
"name": "Row factory configured",
"description": "Connection sets conn.row_factory = sqlite3.Row for dict-like access",
"max_score": 7
},
{
"name": "Checkout uses atomic transaction",
"description": "Book checkout (validate member + check copies + check loan limit + decrement available + insert loan) uses 'with conn:' context manager for atomicity",
"max_score": 14
},
{
"name": "Return uses atomic transaction",
"description": "Book return (update loan status/date + increment available copies) uses 'with conn:' context manager",
"max_score": 10
},
{
"name": "Bulk add uses transaction",
"description": "Bulk book addition wraps all inserts in a single 'with conn:' transaction -- all or nothing on duplicate ISBN",
"max_score": 8
},
{
"name": "Parameterized queries throughout",
"description": "ALL queries use ? placeholders -- no f-strings or string concatenation for SQL values",
"max_score": 10
},
{
"name": "Indexes on FK columns",
"description": "Explicit indexes on loans.member_id and loans.book_id foreign key columns",
"max_score": 7
},
{
"name": "UNIQUE constraints on ISBN and email",
"description": "Schema enforces UNIQUE on books.isbn and members.email at the database level",
"max_score": 5
},
{
"name": "Dates as ISO TEXT strings",
"description": "Dates stored as TEXT in ISO 8601 format, overdue check uses date comparison",
"max_score": 5
},
{
"name": "Connection properly managed",
"description": "Connections are closed in finally blocks or managed via FastAPI dependency injection lifecycle",
"max_score": 5
},
{
"name": "CHECK constraint on status columns",
"description": "Status columns (member status, loan status) use CHECK constraints for valid values",
"max_score": 3
}
]
}evals
scenario-1
scenario-2
scenario-3
scenario-4
scenario-5
skills
sqlite-python-best-practices
verifiers