pgx_lwt_unix

Pgx using Lwt and Unix libraries for IO
README



PGX is a pure-OCaml PostgreSQL client library, supporting Async, LWT, or
synchronous operations.

This library focuses on correctness and safety, with features like:

  • It is nearly impossible to try to execute a prepared statement that hasn't
    been prepared.

  • Trying to run multiple queries at the same time will work properly (although
    there's no performance benefit, since we currently don't send queries in
    parallel).

  • Lots of automated tests.

  • Pgx.Value for parameters and returned data, encouraging people to use
    the built-in converters instead of trying to handle everything as a string.

  • Async and LWT support are built in, no need to write your own IO module.

  • Mirage OS is supported via Pgx_lwt_mirage

We also provide a relatively high-level interface, like Pgx_async.execute_pipe,
which prepares a statement, executes it with the given parameters, returns an
Async.Pipe.Reader.t (so you can stream results), and unprepares the statement
when the query is finished.

Significant portions of the code come from PG'Ocaml.

Setup

opam install pgx_async # or pgx_lwt_unix or pgx_unix or pgx_lwt_mirage

Examples

See pgx_async/bin/pgx_async_example.ml for
a complete example of the high-level functional interface. To translate the
example to Lwt, replace Pgx_async with Pgx_lwt and >>| with >|=. To
translate it to synchronous IO / standard-library-only, use Pgx_unix and
replace both >>| and >>= with |>, or just replace >>| fun () -> with ;.

I.e. in Pgx_unix, you can replace:

Pgx_async.execute ~params "INSERT INTO ..."
>>| fun () ->

... with:

Pgx_unix.execute ~params "INSERT INTO ...";
Install
Published
11 May 2020
Sources
pgx-1.0.tbz
sha256=3672ca83fbf72e6480b74478e3b256bbab3bef81fad7be0da38bae60f0b8725a
sha512=e35f881179371b55be22d40a3514d593003ccba11d5b02c265b8e38dd01dd472adb41d185b3838704685e4e82096fe449c9d709db451bad9b6bde251bdc97729
Dependencies
pgx_lwt
= version
pgx
= version
ocaml
>= "4.08"
base64
with-test & >= "3.0.0"
alcotest-lwt
with-test & >= "1.0.0"
dune
>= "1.11"
Reverse Dependencies