Skip to main content

DBCenter

A real PostgreSQL, embedded in your process. No server to install, no Docker, no connection string to configure - the binaries are fetched once and the database runs as a child process against a directory you choose.

from dbcenter import DBCenter

db = DBCenter(path="./data")
users = db.collection("users")
users.insert_one({"name": "Ada", "age": 36})
print(users.find({"age": {"$gt": 30}}))

Because it is PostgreSQL rather than an imitation of it, the extensions come too. PostGIS and pgvector are downloaded and installed on first use:

db.install_extension("postgis")
db.query("""
    SELECT ST_Distance(
        ST_SetSRID(ST_MakePoint(29.0, 41.0), 4326)::geography,
        ST_SetSRID(ST_MakePoint(32.85, 39.93), 4326)::geography
    ) / 1000 AS km
""")

store = db.vector_store("documents", dimension=1536)
store.add(ids=["a"], embeddings=[[0.1] * 1536])

Fuzzy text search is pg_trgm, which ships with PostgreSQL:

db.collection("cities").fuzzy_search("Istanbu", "name")

What you get

  • A real PostgreSQL. Its planner, its transactions, its types. db.query() takes any SQL, with bound parameters.
  • PostGIS and pgvector, installed on demand. The Linux PostGIS build carries its own GEOS and PROJ, so it works on a machine with nothing installed.
  • A collection API over ordinary relational tables. Columns are added as documents introduce fields.
  • Sync to storage, optionally, with multi_user_sync=True and a SyncEngine: a local directory or Google Drive from Python, and S3 or anything S3-compatible through the dbcenter-serve container. Tables are written as Parquet with a column per field, and columnar=True reads them back through DuckDB for aggregates.

Notes

The PostgreSQL distribution is downloaded to ~/.dbcenter on first use, about 60MB, and reused after that. Extension archives are verified against digests pinned in the source, so a substituted one is refused.

PostgreSQL refuses to run as root, so neither can this. In a container that runs as root - which most base images do - create a user first and start the database as them; the error says so if you forget.

In Google Colab, which runs everything as root, create a user and run your script as them, with a data directory they can write to:

!id -u dbuser >/dev/null 2>&1 || useradd -m dbuser
!sudo -u dbuser python3 /path/to/your_script.py

Extensions are built per PostgreSQL major version. Asking for one with no published build is an error naming the versions that exist, rather than a download that fails later.

MIT licensed. Source at github.com/heyobi/dbcenter.

Metadata

Release files for dbcenter 0.4.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Built distributions (wheels)

Table of built distributions (wheels) for dbcenter 0.4.3
File Actions
dbcenter-0.4.3-cp38-abi3-win_amd64.whl CPython 3.8 abi3 Windows x86-64 Details for dbcenter-0.4.3-cp38-abi3-win_amd64.whl
dbcenter-0.4.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl CPython 3.8 abi3 Linux glibc 2.17+ x86-64 Details for dbcenter-0.4.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
dbcenter-0.4.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl CPython 3.8 abi3 Linux glibc 2.17+ ARM64 Details for dbcenter-0.4.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
dbcenter-0.4.3-cp38-abi3-macosx_11_0_arm64.whl CPython 3.8 abi3 macOS 11.0+ ARM64 Details for dbcenter-0.4.3-cp38-abi3-macosx_11_0_arm64.whl
dbcenter-0.4.3-cp38-abi3-macosx_10_12_x86_64.whl CPython 3.8 abi3 macOS 10.12+ x86-64 Details for dbcenter-0.4.3-cp38-abi3-macosx_10_12_x86_64.whl

Total release size: 32.5 MB

Release files / dbcenter-0.4.3-cp38-abi3-win_amd64.whl

Download URL dbcenter-0.4.3-cp38-abi3-win_amd64.whl
Size 6.9 MB
Tags CPython 3.8 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
abb11f7c2061196d4f2cd5163f978df187714e41f2991b0f3312d2840d31c873
BLAKE2b-256 checksum
How to use checksums
49c42cf34b8ba07df4bdfe79dcaf49b3e7d55ecacf079d42d3150290afdec5cd
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / dbcenter-0.4.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl

Download URL dbcenter-0.4.3-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
Size 6.7 MB
Tags CPython 3.8 Linux glibc 2.17+ x86-64 abi3
SHA-256 checksum
How to use checksums
9accb336daab987cd9e9a16f18bf43d9fa3538ece2b80925ecc983b57a949294
BLAKE2b-256 checksum
How to use checksums
98608f4711518b7f9fb6fdcdca8be039d4376f23d1203738d18dfb96170ffbe4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / dbcenter-0.4.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl

Download URL dbcenter-0.4.3-cp38-abi3-manylinux_2_17_aarch64.manylinux2014_aarch64.whl
Size 6.3 MB
Tags CPython 3.8 Linux glibc 2.17+ ARM64 abi3
SHA-256 checksum
How to use checksums
b8d258e14229cec12b43cb31e91b8854b2e1f4f807e24e524b8b9e1e0239fe29
BLAKE2b-256 checksum
How to use checksums
30ff8e3edeb6cb77cdadc3f98a696ccf93a5b5cd3e9838a6f3ca176b097aa281
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / dbcenter-0.4.3-cp38-abi3-macosx_11_0_arm64.whl

Download URL dbcenter-0.4.3-cp38-abi3-macosx_11_0_arm64.whl
Size 6.0 MB
Tags CPython 3.8 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
46835ae73faea5b12a7c0de911afecf7b7db3754293a1278029dc98d1484fd6f
BLAKE2b-256 checksum
How to use checksums
5cfddadff54717efb21a8d541dd3e39f46cdbe24af0fb0d54b2148ecb42d33df
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Release files / dbcenter-0.4.3-cp38-abi3-macosx_10_12_x86_64.whl

Download URL dbcenter-0.4.3-cp38-abi3-macosx_10_12_x86_64.whl
Size 6.5 MB
Tags CPython 3.8 abi3 macOS 10.12+ x86-64
SHA-256 checksum
How to use checksums
79bf83e53e9b7a5352900c93ca646d5d3228666c3e61f5050ebb9d9db3962e3b
BLAKE2b-256 checksum
How to use checksums
9adb82ccffc11ca8e447c23f4cb4957bc326463c3a29a843549b4c048061ee31
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via maturin/1.15.0

Security for dbcenter 0.4.3

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.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page