Re: World's simplest Scheme interface to sqlite3
Lassi Kortela 29 Aug 2020 11:36 UTC
> https://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo-19.html
>
> Here's all it has:
>
> 1) Open a database.
> 2) Close a database.
> 3) Format a string to escape it properly (would need some changes)
> 4) Execute a SQL command, auto-formatting the command string
> with arguments, returns one value
> 5) Evaluate a SQL statement (not clear how these are different)
> 6) Evaluate a SQL statement, map a Scheme proc over the values and
> return a list.
>
> You think this would make sense as a SRFI, just to get some easy and
> cheap persistence into Scheme?
An SRFI at this level of complexity would probably make sense, yes.
I would leave out the string formatting. Building SQL by hand leads to
hard-to-read and bug-prone code, and bugs can turn into SQL injection.
Better to rely on prepared statements for all parameterization. There
may be some advanced stuff (reflection on the structure of tables) that
requires SQL constructed in Scheme, but since this is the simple SRFI I
would just leave it out.
This ought to be enough for a minimal interface:
database-open string . alist => database
database-execute database string . alist => row-generator
database-close database
Where alist is a list of (string . object) pairs. For `database-open`,
maybe (string . string) pairs.
Have Amirouche's tuple store and key-value store interfaces been
implemented for SQLite?