Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the best SQL library for use in Common Lisp? [closed]

Ideally something that will work with Oracle, MS SQL Server, MySQL and Posgress.

like image 891
dsm Avatar asked Sep 23 '08 19:09

dsm


3 Answers

if you mean common lisp by lisp, then there's cl-rdbms. it is heavily tested on postgres (uses postmodern as the backend lib), it has a toy sqlite backend and it also has an OCI based oracle backend. it supports abstracting away the different sql dialects, has an sql quasi-quote syntax extension installable on e.g. the [] characters.

i'm not sure if it's the best, and i'm biased anyway... :) but we ended up rolling our own lib after using clsql for a while, which is i think the most widely used sql lib for cl.

see cliki page about sql for a further reference.

like image 111
Attila Lendvai Avatar answered Nov 13 '22 16:11

Attila Lendvai


At the moment there's no open-source library that supports all the SQL backends you mention. CLSQL comes quite close (lacking only support for MS SQL). The alternatives are:

  • CL-RDBMS (which supports Oracle, Postgres through Postmodern and SQLite3)
  • Postmodern (only Postgres).

If you can use a commercial Lisp, you can give a try to CommonSQL included with Lispworks, which supports all the databases you mentioned.

CLSQL looks like the most popular open source library at the moment. Unfortunately, it seems to suffer from bit rot, and the developers had to make some compromises to support all those platforms.

If the RDB backend is not a constraint, then I recommend Postmodern. It is very well documented and has a clean API (and a nice small language compiled to SQL). Also, it is well maintained and small enough to keep being understandable and extensible. It focuses only on Postgres, not trying to be all things for all people.

like image 28
Ryszard Szopa Avatar answered Nov 13 '22 15:11

Ryszard Szopa


Allegro Common Lisp has an ODBC library and a MySQL-specific library, both exhaustively documented. I've used the MySQL one; no surprises.

like image 2
Rich Avatar answered Nov 13 '22 17:11

Rich