PostgreSQL

Connect via the Astapa proxy.

Python SDK

terminal
pip install astapa
python
from astapa import Astapa

client = Astapa(
    api_url="http://localhost:8080",
    proxy_host="localhost",
    proxy_port=5433,
)

session = client.create_session(project_id="my-project")
session.connect(database="mydb", user="postgres", password="pass")

session.execute("UPDATE users SET status = 'active' WHERE id = 1")
print(session.diff())

session.propose()
session.approve()

Context manager

python
with client.session(
    project_id="demo",
    database="mydb",
    user="postgres",
    password="pass",
) as session:
    session.execute("INSERT INTO orders (user_id, amount) VALUES (1, 99.99)")
    # auto-proposes on exit

Direct connection

python
import psycopg2

conn = psycopg2.connect(
    host="localhost",
    port=5433,
    database="mydb",
    user="postgres",
    password="pass",
    options=f"-c astapa_session={session.id}"
)

Session methods

execute(sql)Run SQL (writes go to shadow)
diff()Changes by table
mutations()Chronological log
propose()Submit for review
approve()Apply to production
reject()Discard changes

Supported

PostgreSQL 14+, Aurora, Supabase, Neon