page:guides:fastapi:database connection

Connect Postgres for FastAPI

Summary

Connect a FastAPI app to PostgreSQL on Ample. Read DATABASE_URL at runtime with psycopg: when you supply one with --env it is delivered encrypted and takes precedence; when you supply none and the app needs PostgreSQL, Ample auto-provisions a managed PostgreSQL 16 database and injects its connection string.

Representative Queries

Prerequisites

Workflow Steps

  1. Read the URL at runtime
    Open connections from the DATABASE_URL environment variable inside the app; never commit credentials and never connect at build time.

  2. Choose the source of the database
    Pass --env DATABASE_URL=... for an existing database, or omit it to let Ample provision a managed one on first deploy and reuse it on redeploys.

    Command: ample deploy . --name --public --start "python3 run.py"

  3. Test the connection through the app
    Expose a route (/items) that runs a trivial query and returns postgres=ok.

  4. Verify
    Fetch the live URL and run the success checks below. On failure read the build log, then the runtime log, fix the cause and deploy again; do not blind-retry.

    Command: ample logs --kind build

Success Checks

Limitations

Cost Estimate

Components

Note: Apps and managed databases auto-pause when idle; the estimate is the always-on monthly price of the tested sizes. Plan quotas and budgets apply.

Evidence Summary

Formats