A database-independent interface for Common Lisp, providing a uniform API for SQLite, PostgreSQL, and MySQL.
Database independent interface for Common Lisp
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Provides a uniform API for SQLite, PostgreSQL, and MySQL, enabling seamless switching between databases for different environments without changing application logic.
Includes `connect-cached` for thread-safe connection pooling, improving efficiency in multithreaded applications by reusing existing connections.
Offers built-in functions like `with-transaction`, `begin-transaction`, `commit`, and `rollback` for reliable and easy database transaction management.
Allows creation of custom drivers by subclassing `<dbi-driver>`, making it adaptable to other databases beyond the three supported out of the box.
Features `dbi:*sql-execution-hooks*` for flexible logging and debugging of SQL executions, with a provided `simple-sql-logger` for immediate use.
The March 2020 update changed `dbi:execute` to accept parameters as a list instead of separate arguments, making older code incompatible and requiring manual updates.
Only supports SQLite3, PostgreSQL, and MySQL natively; other databases require implementing a new driver from scratch, which can be time-consuming.
Requires managing separate driver systems (e.g., :dbd-sqlite3) and explicit dependencies in system definitions for executable builds, adding to initial setup effort.
The abstraction layer may introduce overhead compared to using database-specific libraries directly, though this trade-off is not quantified in the documentation.