== ORM-DB-SQLite
SQLite3 backend for the [[orm]] abstract database interface.
=== Description
{{orm-db-sqlite}} implements the {{orm-db}} backend protocol on top of CHICKEN's {{sqlite3}} bindings. It provides a single constructor, {{sqlite3-backend}}, which returns a backend alist suitable for {{db/backend}}. SQL is generated through the {{ssql}} egg using a registered {{sqlite3}} dialect.
=== Requirements
* CHICKEN Scheme 5.0 or later
* Dependencies: orm, sqlite3, ssql, logger
* SQLite3 development libraries (required by the {{sqlite3}} egg's C binding)
=== Installation
chicken-install orm-db-sqlite
=== Basic Usage
(import orm-db orm-db-sqlite orm)
;; Select the backend and open a file-based database
(db/backend (sqlite3-backend))
(db/path "myapp.db")
(db/connect)
(define-model users)
(users/all)
(db/close)
The {{db/path}} value is a SQLite database file path. Use {{":memory:"}} for a transient in-memory database.
(db/path ":memory:")
=== API
(sqlite3-backend)
Returns a backend alist implementing the {{orm-db}} protocol — the keys {{connect}}, {{close}}, {{query}}, and {{execute}} — backed by the {{sqlite3}} egg. Pass the result to {{db/backend}}.
(db/backend (sqlite3-backend))
The backend procedures are used by {{orm-db}}; you do not normally call them directly:
* '''connect''': opens the SQLite database at {{db/path}}
* '''close''': finalizes and closes the connection
* '''query''': runs a SELECT, returning a vector of alists
* '''execute''': runs a statement, returning the requested output value (e.g. {{rows_affected}}, {{last_insert_rowid}})
=== SQL Dialect
The backend registers an {{ssql}} {{sqlite3}} dialect (derived from the ANSI translator) so {{ssql}} S-expression forms passed to {{db/query}} / {{db/execute}} render as SQLite-compatible SQL. Raw SQL strings are passed through unchanged.
=== License
Copyright © 2026 Rolando Abarca. Released under the BSD-3-Clause license.
=== Repository
Part of the [[https://github.com/schematra/chicken-orm-egg|chicken-orm-egg]] project. See [[orm]] for the ORM itself.