CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl-labs/sqlite-python-best-practices

SQLite best practices for Python -- PRAGMAs per connection, context manager transactions, parameterized queries, row_factory, executemany, FK indexes

92

1.73x
Quality

90%

Does it follow best practices?

Impact

97%

1.73x

Average score across 5 eval scenarios

SecuritybySnyk

Passed

No known issues

Overview
Quality
Evals
Security
Files

criteria.jsonevals/scenario-1/

{
  "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

criteria.json

task.md

tile.json