Built-in sandbox SHIM: a DB-API 2.0 sqlite3 module for the model's Python
sandbox, backed by the JVM's xerial sqlite-jdbc driver (already on the
classpath via the persistence extension, so no new dependency and native-image
reachability is already configured). CPython's _sqlite3 native extension is
absent in GraalPy, so import sqlite3 otherwise fails with ModuleNotFoundError.
Connections live HOST-side as java.sql.Connections in a per-JVM registry keyed
by an integer handle; the Python Connection/Cursor are thin handle wrappers.
SQL + params cross the strings-only boundary; result rows come back as vectors
(BLOBs base64-tagged). :memory: databases are fully supported; a file path is
opened host-side via jdbc:sqlite:<path>. Autocommit is on, so commit() is a
no-op flush and data persists without it (the forgiving DB-API path).
Built-in sandbox SHIM: a DB-API 2.0 `sqlite3` module for the model's Python sandbox, backed by the JVM's xerial `sqlite-jdbc` driver (already on the classpath via the persistence extension, so no new dependency and native-image reachability is already configured). CPython's `_sqlite3` native extension is absent in GraalPy, so `import sqlite3` otherwise fails with ModuleNotFoundError. Connections live HOST-side as `java.sql.Connection`s in a per-JVM registry keyed by an integer handle; the Python `Connection`/`Cursor` are thin handle wrappers. SQL + params cross the strings-only boundary; result rows come back as vectors (BLOBs base64-tagged). `:memory:` databases are fully supported; a file path is opened host-side via `jdbc:sqlite:<path>`. Autocommit is on, so `commit()` is a no-op flush and data persists without it (the forgiving DB-API path).
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |