---
title: "Lire la base PostgreSQL d'un autre projet : la doc de while.sh"
url: https://while.sh/fr/docs/briques/lire-une-base/
updated: 2026-11-09
---

# Lire la base d'un autre projet

Une appli lit la base d'un autre projet de votre organisation, en lecture seule, par son pilote habituel. Les approbateurs de la base choisissent ce qu'elle lit.

> Vous, à votre agent : Fais lire au tableau de bord la base de l'entrepôt des ventes.

## Ce que votre agent écrit

Votre agent l'écrit dans while.yaml, à la racine de votre appli :

```yaml titre="while.yaml"
databases:
  - from: ventes/main
    access: read
```

## Ce que reçoit votre appli

Votre appli reçoit ces variables d'environnement à chaque mise en ligne :

| Variable | Ce qu'elle contient |
|---|---|
| `DB_VENTES_MAIN_URL` | L'adresse de la base lue (ici la base main du projet ventes). |
| `DB_VENTES_MAIN_USER` | Le rôle PostgreSQL de votre appli dans cette base. |
| `DB_VENTES_MAIN_PASSWORD` | Son mot de passe. |

## Quand vous en servir

Servez-vous-en quand un projet a besoin des données d'un autre, comme un entrepôt : il lit sa base plutôt qu'appeler une API, en production seulement.

## Comment ça marche

Une appli lit en lecture seule la base PostgreSQL d'un autre projet de l'organisation, par son pilote habituel et `DB_<NAME>_URL`. Les approbateurs de la base source valident, et choisissent ce qu'elle lit.

## Ce qu'il faut savoir

La première mise en ligne qui déclare la lecture demande la validation des approbateurs de la base source. Une fois validée, chaque appli lectrice a son rôle PostgreSQL dans cette base, exactement à ses droits : la base entière, ou les schémas, tables et colonnes que les approbateurs choisissent. Le projet source voit qui le lit (outil `explain_access`).

Seule la production lit : une prévisualisation ne lit pas, parce que son code n'est pas relu. Les deux projets sont dans la même organisation, qui lit 10 bases au plus (quota). La lecture se fait sur l'instance principale de la base source, avec 5 connexions par appli, 30 secondes par requête et 60 secondes au plus d'inactivité dans une transaction. Retirer la lecture coupe la connexion ; la redonner demande une nouvelle mise en ligne du projet lecteur, avec un mot de passe neuf.

Le réseau ne réserve pas encore le pooler de la base source aux seules applis lectrices : ce sont leurs droits PostgreSQL qui séparent ce que chacune lit.

## Les outils MCP de votre agent

Votre agent s'en occupe avec les outils `deploy_app`, `plan_deploy` et `explain_access`.
