Using Postgres connection functions
Matthias Klumpp
mak at debian.org
Mon Jan 15 02:28:29 UTC 2018
On Saturday, 13 January 2018 at 17:58:14 UTC, Joe wrote:
> On Saturday, 13 January 2018 at 10:10:41 UTC, Jacob Carlborg
> wrote:
>> There's a native D library, ddb [1], for connecting to
>> Postgres. Then you don't have to worry about null-terminated
>> strings.
>
> There are several D libraries that I would consider "native":
> derelict-pq, dpq, dpq2 and ddb. The latter perhaps has the
> distinction that it doesn't use libpq, but rather implements
> the Postgres FE/BE protocol. That's a bit *too* native for my
> taste. It means the library maintainer has to keep up with
> changes to the internal protocol, which although published, the
> Postgres group doesn't have to maintain compatibility from
> version to version. For example, they haven't dropped the
> PQsetdbLogin function even though the PQconnectdb and
> PQconnectdbParams functions are obviously preferred. OTOH,
> there used to be an AsciiRow message format in the protocol,
> that was dropped, unceremoniously (not even mentioned in the
> release notes).
If you are after a good way to use Postgres in a real-world
application, I highly recommend ddbc[1] (which also supports
other backends).
There are a lot of D Postgres bindings out there, and all of them
are about 70% completed, but nobody really bothered to make one
finished and really good (and well maintained) binding. DDBC is
really close to being complete, and contains a few convenience
features that make it nice to use in an application. It also is
used by Hibernated[2] in case you want an ORM for your app at
some point.
Both libraries aren't up to tools like SQLAlchemy & Co. from
other programming languages, but they are decent.
For simple cases, dpq2 & Co. might work well enough as well.
In any case, please don't start another Postgres library and
consider contributing to one of the existing ones, so that we
maybe have one really awesome, 100% complete library at some
point.
If, on the other hand, your goal is to learn about the low-level
Postgres interface and not just to have a Postgres interface for
an application you develop, by all means, play with it :-)
Cheers,
Matthias
[1]: https://github.com/buggins/ddbc
[2]: https://github.com/buggins/hibernated
More information about the Digitalmars-d-learn
mailing list