Research-Stack/4-Infrastructure/shim/rds_connect.py
allaun e6bbb612d0 fix(infra): point default RDS host to neon server Tailscale IP
- Redirected the default RDS_HOST/PGHOST database connection default
  to neon-64gb (100.92.88.64) across all Python shims, shell wrappers,
  and Rust probes.
- Cleaned up local defaults in rds_connect.py, sync_wiki_to_rds.py,
  dataset_ingest_rds.py, batch_embed_artifacts.py, db.rs, cache-offload.sh,
  db-consolidate.sh, backup.sh, and ene-api-wrapper.sh.

Build: 0 jobs, 0 errors (lake build)
2026-06-18 23:28:46 -05:00

56 lines
2.1 KiB
Python

#!/usr/bin/env python3
"""Shared database connection helper — resolves env vars, DATABASE_URL."""
import os
from urllib.parse import urlparse
def _resolve_params() -> dict:
"""Resolve connection parameters from env, preferring DATABASE_URL."""
du = os.environ.get("DATABASE_URL", "").strip()
if du:
p = urlparse(du)
params = {
"host": p.hostname or "localhost",
"port": p.port or 5432,
"user": p.username or "postgres",
"password": p.password or "",
"dbname": p.path.lstrip("/") if p.path else "postgres",
"sslmode": "prefer",
}
# Extract sslmode from query string
if p.query:
for q in p.query.split("&"):
if "=" in q:
k, v = q.split("=", 1)
if k == "sslmode":
params["sslmode"] = v
return params
host = os.environ.get("RDS_HOST", os.environ.get("PGHOST", "100.92.88.64"))
port = int(os.environ.get("RDS_PORT", os.environ.get("PGPORT", "5432")))
user = os.environ.get("RDS_USER", os.environ.get("PGUSER", "postgres"))
dbname = os.environ.get("RDS_DB", os.environ.get("RDS_DBNAME", os.environ.get("PGDATABASE", "postgres")))
sslmode = os.environ.get("RDS_SSLMODE", os.environ.get("PGSSLMODE", "prefer"))
password = os.environ.get("RDS_PASSWORD", os.environ.get("PGPASSWORD", ""))
return {"host": host, "port": port, "user": user,
"password": password, "dbname": dbname, "sslmode": sslmode}
def connect_rds(**overrides):
"""Connect to the database. Override any resolved param via kwargs.
Resolution order per field:
1. explicit **override
2. DATABASE_URL env var
3. individual PG/RDS env vars
4. built-in defaults (localhost)
"""
p = _resolve_params()
p.update(overrides)
import psycopg2
kw = {k: p[k] for k in ("host", "port", "user", "password", "dbname", "sslmode")}
if "connect_timeout" in p:
kw["connect_timeout"] = p["connect_timeout"]
return psycopg2.connect(**kw)