Observed since 20 Oct, 17:40 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Lazy, environment-driven PostgreSQL connection management with multi-database support and table/query helpers.
Lazy, environment-driven PostgreSQL connection management with multi-database support and table/query helpers.
abstract_database is the connection layer of the Abstract Secure Backend
stack. It resolves connection settings from your environment, manages
connections to one or many databases, and provides thin helpers for tables and
queries — without ever forcing a database connection before you actually need
one.
abstract-securefiles React/TypeScript UI components
abstract_logins Flask blueprints: auth + secure files
abstract_queries Domain query managers (users, uploads, ...)
abstract_database <-- you are here: lazy PostgreSQL connection + helpers
abstract_security Env loading, hashing, tokens, utilities
Dependencies flow downward; nothing reaches back up.
pip install abstract_database
Requires Python ≥ 3.11 and PostgreSQL (uses psycopg[binary]).
Connection settings are read from the environment, so the package is portable
across machines. Per-database keys follow <DBNAME>_<DBTYPE>_<FIELD>
(upper-cased), or you can supply a single URL:
ABSTRACT_DATABASE_USER=app_user
ABSTRACT_DATABASE_PASSWORD=...
ABSTRACT_DATABASE_HOST=127.0.0.1
ABSTRACT_DATABASE_PORT=5432
ABSTRACT_DATABASE_DBNAME=app
# or:
ABSTRACT_DATABASE_URL=postgresql://app_user:...@127.0.0.1:5432/app
Optional locations:
| Variable | Purpose |
|---|---|
ABSTRACT_DB_ENV_PATH | Path to the .env file to read. |
ABSTRACT_DB_TABLES_DIR | Directory holding table-config JSON. |
ABSTRACT_DB_TYPE | Default db-type label (default database). |
from abstract_database import connectionManager, get_cur_conn
# Constructing a manager does NOT open a connection.
db = connectionManager(dbName="app", dbType="database")
# The connection opens on first use; failures raise a clear ConnectionError.
cur, conn = get_cur_conn() # RealDict cursor + connection
cur.execute("SELECT 1;")
print(cur.fetchone())
conn.close()
The repository has a standalone, read-only browser for inspecting Hugpy's
PostgreSQL model database. It opens on discovery_models, supports searching
all columns, sorting by clicking column headers, and paging through results.
Selecting a row shows an expandable, syntax-colored JSON tree with controls to
expand or collapse nested values.
The app-specific script is outside the abstract_database package and uses
the package's generic DatabaseBrowser API.
The viewer runs as a persistent solcatcher user service on the Hugpy server
and is proxied by nginx. On the LAN or WireGuard, open
https://dev.hugpy.ai/modeldb/. Nginx restricts this route to LAN and
WireGuard addresses.
The utility reads Hugpy's connection settings from
/srv/hugpy/etc/hugpy-db.env and opens http://127.0.0.1:8765/.
users = connectionManager(dbName="app", dbType="database")
audit = connectionManager(dbName="auditlog", dbType="database")
# Distinct, independently-configured managers — no global clobbering.
connectionManager never touches the
database. The connection opens on first real use, so importing the package or
booting an app never blocks (or fails) on an unreachable database. Table setup
is deferred behind ensure_inserts().connectionManager() still maps to one shared
default.connect_db() raises a ConnectionError with the
underlying cause instead of silently returning None and breaking three calls
later.MIT.
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 0.0.2.199 | 16 Oct 2026 | 14 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 17:40 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:7838d839d1b72986c37ee99c7c1101ed773b98605465e4e524d365972d844c0e