frostlake (Python driver)
A pure-stdlib DB-API 2.0 (PEP 249) driver for Frostlake, speaking
the engine's HTTP protocol against a running DatabaseHttpServer. No JVM, no dependencies.
Engine version
Requires a Frostlake engine 0.0.7 or newer. Ask a running server which one it is with
SELECT CURRENT_VERSION() — every release answers it, so the check works against any engine.
The driver versions independently of the engine: it speaks the HTTP protocol, not the jar, so this is a floor rather than a lockstep pin.
Usage
import frostlake
conn = frostlake.connect("frostlake://localhost:18082/MY_DB?schema=PUBLIC")
cur = conn.cursor()
cur.execute("SELECT id, name FROM people WHERE id = ?", (1,))
for row in cur:
print(row)
connect() accepts a DSN (frostlake://host:port[/DATABASE][?schema=SCHEMA]) or
host=/port=/database=/schema= keywords. The DSN's database/schema apply as USE
statements on the connection's session before its first statement.
Semantics
paramstyle = "qmark"; parameters are inlined client-side with the same rules as Frostlake's JDBC driver (strings escape backslashes and quotes;bytesbinds as a hexBINARYliteral;datetime/date/timeas typed literals; lists as array literals). A?inside a string literal, quoted identifier or comment is never a placeholder.- Types: fixed-point
NUMBER/DECIMALwith a scale →decimal.Decimalcarrying the exact digits the server sent; scale-0 numerics →int;FLOAT/DOUBLE/REAL→float;BOOLEAN→bool;DATE/TIME/TIMESTAMP*→datetime.date/time/datetime; semi-structured cells (VARIANT/OBJECT/ARRAY) as the JSON text the engine returns. - Type objects and constructors: the PEP 249 singletons
STRING,BINARY,NUMBER,DATETIME,ROWIDcompare equal to the engine type names in their family, socur.description[i][1] == frostlake.NUMBERworks (parameterized spellings likeNUMBER(38,10)included).Date,Time,Timestamp, the*FromTicksvariants andBinaryare all present.ROWIDmatches nothing — the engine has no rowid. - Multi-statement:
execute()exposes the first result set;cursor.nextset()steps to the next and returnsNoneonce the last one is current. - Transactions: connections start in autocommit (matching the Snowflake Python
connector, not strict DB-API);
conn.begin()orconn.autocommit = Falsefor explicit transactions, thencommit()/rollback(). cursor.rowcountis derived from the engine's one-cell DML result (number of rows inserted/updated/deleted).cursor.lastrowidis alwaysNone.cursor.callproc(name, params)issuesCALL name(...)and returns the input sequence unchanged; the engine has no OUT parameters, so any result is read with the fetch methods.- Using a closed cursor or connection raises
InterfaceError; fetching before anyexecute()raisesProgrammingError. - The exception classes are also reachable as connection attributes (
conn.Error, …). - One HTTP session per connection.
Tests
test_frostlake_unit.py needs no server and no JVM:
python3 -m unittest test_frostlake_unit -v
test_frostlake.py boots a real engine and needs both:
JAVA_HOME=~/.jdks/liberica-17.0.18 \
FROSTLAKE_CLASSPATH="<engine classes>:<dependency classpath>" \
python3 -m unittest -v
Unset FROSTLAKE_CLASSPATH skips the integration suite; the unit suite still runs.
Metadata
Release files for frostlake 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| frostlake-0.1.0.tar.gz | 17.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| frostlake-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 31.2 kB
Release files / frostlake-0.1.0.tar.gz
| Download URL | frostlake-0.1.0.tar.gz |
|---|---|
| Size | 17.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
456b94c86b27c028c47c234f75301ee61f1638e0e8e3219ae3dcfc8340d51dea
|
|
BLAKE2b-256 checksum How to use checksums |
13ec61d3ee99152caf0a15e70771ed50f1e198ed46464686dc0b589635e5f7e1
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|
Release files / frostlake-0.1.0-py3-none-any.whl
| Download URL | frostlake-0.1.0-py3-none-any.whl |
|---|---|
| Size | 13.6 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c9c7d62c61f922a598059add4f37ce992a648a40221dcb7c8687a106b8e22942
|
|
BLAKE2b-256 checksum How to use checksums |
6fd286babcc7b5fadc16f3b0313e2223a8084091fdb3fffaab9f1a9ddd559f12
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.12.13
|