page:guides:starlette:database connection

Connect Postgres for Starlette

Summary

Database connection for a Starlette app on Ample. Verified on Starlette: a managed PostgreSQL database auto-provisioned and injected as DATABASE_URL, with real queries succeeding at request time (records=ok). Build and start: pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template.

Prerequisites

Resource Requirements

Workload Steps

  1. Build and start
    pip install into .ample/python from requirements.txt, then uvicorn from run.py reading PORT on the python-3.12 template; the server must bind 0.0.0.0 on PORT.
  2. Read DATABASE_URL at runtime
    Open connections from the environment inside handlers or a pool; omit DATABASE_URL to auto-provision a managed database or pass --env DATABASE_URL=... for an existing one.
  3. Verify
    Fetch the live URL and /p/relational-records on the example; on failure read the build and runtime logs. ample logs --kind build

Success Checks

Limitations

Cost Estimate

Components

Note: Always-on monthly price of the tested sizes; apps auto-pause when idle. Buckets are allocation-priced per quota and not included.

Examples

Tested Configuration

Known Unknowns

Evidence Summary