What is SQLite3-OCaml?
SQLite3-OCaml is an OCaml library with bindings to the
SQLite3 client API. Sqlite3 is a self-contained,
serverless, zero-configuration, transactional SQL database engine with
outstanding performance for many use cases.
These bindings are written in a way that enables a friendly coexistence with
the old (version 2) SQLite and its OCaml wrapper
The API in file
src/sqlite3.mli is fully documented. It can also be found
SQLite3 has its own online documentation.
test-directory in this distribution contains a few simple examples for
testing various features of this library. The tests can be run by executing
SQLite3-OCaml depends on
pkg-config to locate and compile against an
If the SQLite3 version is greater than or equal to 3.3.7, it is assumed that it
supports Run-Time Loadable Extensions.
If this feature has been explicitly disabled in the library, building
applications will fail with:
Undefined symbols for architecture ...: "_sqlite3_enable_load_extension", referenced from: _caml_sqlite3_enable_load_extension in libsqlite3_stubs.a(sqlite3_stubs.o) (maybe you meant: _caml_sqlite3_enable_load_extension)
You can check if your library is missing loadable extensions by searching
it for the string
If you need to change where
pkg-configwill look for the SQLite3
library, set the
PKG_CONFIG_PATHenvironment variable to the new
directory. This can be automated by setting the
environment variable. This will instruct the build to see if a brewed
version of SQLite is installed and route
You can explicitly disable run-time loadable extensions by calling
configurewith the flag
--disable-loadable-extensionsor by setting
the environment variable
Due to frequent installation issues with loadable extensions on Mac OS X,
the default there is to disable them. You will have to explicitly enable
them on that platform.
Mikhail Fedotov wrote ocaml-sqlite for SQLite version 2. His bindings
served as a reference for this wrapper, but sqlite3 is written completely
from scratch since the C interface changed significantly.
Christian Szegedy wrote the initial release for SQLite version 3.
Markus Mottl rewrote Christian's bindings for Jane Street Holding, LLC to
clean up a few things and to make it perform better in multi-threaded
Enrico Tassi contributed support for user-defined scalar functions.
Markus W. Weissmann contributed backup functionality.
Contact Information and Contributing
Please submit bugs reports, feature requests, contributions and similar to
the GitHub issue tracker.
Up-to-date information is available at: https://mmottl.github.io/sqlite3-ocaml
>= "6.0.0" & < "9.0.0"
>= "2.2.0" & < "5.0.1"