Rebranche la base sur DATABASE_URL (PostgreSQL partagé) au lieu du SQLite en dur
Build & Deploy / build (push) Successful in 34s

database.py codait la base en dur en SQLite et ignorait la variable
DATABASE_URL fournie par le compose. Le conteneur recréait donc un
/app/regwatch.db vide à chaque démarrage (aucun volume), pendant que les
397 documents réels dormaient dans PostgreSQL : GET /documents renvoyait
[] et le cron de veille comptait dans PG des documents que les scrapers
écrivaient dans le SQLite jetable.

- DATABASE_URL est lu depuis l'environnement, le SQLite ne reste qu'en repli.
- check_same_thread n'est passé que pour SQLite (psycopg2 le rejette).
- psycopg2-binary ajouté : aucun driver PostgreSQL n'était installé.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-08-15 15:01:17 +02:00
co-authored by Claude Opus 5
parent b780dce8c3
commit 97983ae5ba
2 changed files with 7 additions and 3 deletions
+5 -2
View File
@@ -3,11 +3,14 @@ from sqlalchemy.orm import sessionmaker, declarative_base
import os
DB_PATH = os.path.join(os.path.dirname(os.path.dirname(__file__)), "regwatch.db")
DATABASE_URL = f"sqlite:///{DB_PATH}"
DATABASE_URL = os.getenv("DATABASE_URL", f"sqlite:///{DB_PATH}")
# check_same_thread est propre à SQLite : psycopg2 le rejette.
CONNECT_ARGS = {"check_same_thread": False} if DATABASE_URL.startswith("sqlite") else {}
engine = create_engine(
DATABASE_URL,
connect_args={"check_same_thread": False}
connect_args=CONNECT_ARGS
)
SessionLocal = sessionmaker(