pgmem for Python
A real PostgreSQL 18 that runs entirely in memory, packaged as a single binary and driven from Python. Prepare the schema once, then give every test its own fork of that state in about 20 ms.
import pgmem, psycopg
with pgmem.start(database="app") as pg:
with psycopg.connect(pg.template.dsn) as conn:
conn.execute(open("schema.sql").read())
snap = pg.template.snapshot()
with snap.fork() as fork: # private copy of the prepared database
psycopg.connect(fork.dsn) ...
pytest
The wheel registers a plugin. Override pgmem_snapshot to run migrations,
then use pgmem_dsn (or pgmem_fork) in tests:
# conftest.py
@pytest.fixture(scope="session")
def pgmem_snapshot(pgmem_server):
run_migrations(pgmem_server.dsn)
return pgmem_server.snapshot()
# test_orders.py
def test_orders(pgmem_dsn):
with psycopg.connect(pgmem_dsn) as conn: ...
pgmem_class_dsn shares one fork across a test class for read-only tests.
pgmem_options returns the keyword arguments passed to pgmem.start.
Any driver works (psycopg, asyncpg, pg8000, SQLAlchemy): the wrapper only hands out DSNs. The server is one PostgreSQL session per fork; pooled connections are serialized at transaction boundaries.
Binary
Platform wheels bundle the pgmem binary. PGMEM_BINARY overrides the
lookup for platforms without a wheel or for local builds
(go build ./cmd/pgmem).
Release files for pgmem 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Reset | |||
|---|---|---|---|---|
| pgmem-0.1.0-py3-none-win_arm64.whl | Python 3 | none | Windows ARM64 | Details |
| pgmem-0.1.0-py3-none-win_amd64.whl | Python 3 | none | Windows x86-64 | Details |
| pgmem-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl | Python 3 | none | Linux glibc 2.17+ x86-64, Linux musl 1.1+ x86-64 | Details |
| pgmem-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl | Python 3 | none | Linux glibc 2.17+ ARM64, Linux musl 1.1+ ARM64 | Details |
| pgmem-0.1.0-py3-none-macosx_13_0_arm64.whl | Python 3 | none | macOS 13.0+ ARM64 | Details |
Total release size: 85.4 MB
Release files / pgmem-0.1.0-py3-none-win_arm64.whl
| Download URL | pgmem-0.1.0-py3-none-win_arm64.whl |
|---|---|
| Size | 16.5 MB |
| Tags | Python 3 Windows ARM64 |
|
SHA-256 checksum How to use checksums |
45951e767c5481f92b733bfa6f3dd3e80aa44728707b56d6f401ce2ea032976d
|
|
BLAKE2b-256 checksum How to use checksums |
309ae3580e0414919ae409618f0146fa634b05a94e504269124fdc0ec0798d01
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency logRelease files / pgmem-0.1.0-py3-none-win_amd64.whl
| Download URL | pgmem-0.1.0-py3-none-win_amd64.whl |
|---|---|
| Size | 17.8 MB |
| Tags | Python 3 Windows x86-64 |
|
SHA-256 checksum How to use checksums |
6dd10c87f5c5cae43c28373d482114a58d6193fd581ebfa4a433eafb8db72de3
|
|
BLAKE2b-256 checksum How to use checksums |
18795043dee8d8c3176f280f3b0de1b19b55091ed08e59ed9d65abd173326603
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency logRelease files / pgmem-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl
| Download URL | pgmem-0.1.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.musllinux_1_1_x86_64.whl |
|---|---|
| Size | 17.7 MB |
| Tags | Linux glibc 2.17+ x86-64 Linux musl 1.1+ x86-64 Python 3 |
|
SHA-256 checksum How to use checksums |
c909a52af6dad685740b2bc2c5472d30ec5566a3ffe3adfa73ea241b071e53f4
|
|
BLAKE2b-256 checksum How to use checksums |
986e5e17a414f973f039b5f97593cff16cfcb78c8ffa19ea9b0b5aac35d267bc
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency logRelease files / pgmem-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl
| Download URL | pgmem-0.1.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.musllinux_1_1_aarch64.whl |
|---|---|
| Size | 16.5 MB |
| Tags | Linux glibc 2.17+ ARM64 Linux musl 1.1+ ARM64 Python 3 |
|
SHA-256 checksum How to use checksums |
e59f6459b4449e6e7c4205f479f4fed1f0ac1d2d15c695efe1c3f619193cd529
|
|
BLAKE2b-256 checksum How to use checksums |
dfedaf71574a350545fca1dd545b9fd016c2e3ed9eaaf1113b6db8da20ba721c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency logRelease files / pgmem-0.1.0-py3-none-macosx_13_0_arm64.whl
| Download URL | pgmem-0.1.0-py3-none-macosx_13_0_arm64.whl |
|---|---|
| Size | 16.9 MB |
| Tags | Python 3 macOS 13.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
3967f7c5cfc6b8bece367834ea4e6acdd01c0f9fc47919b5012978652b066bc1
|
|
BLAKE2b-256 checksum How to use checksums |
bef3db6854f3bc647173bc37b10f380c4c99d46988fc21056e6738fde994990a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 14, 2026.
Transparency log