Access the local Odoo PostgreSQL database for development. Use when you need to query, inspect, or debug data in the local dev database.
This skill follows templates/SKILL.md conventions.
Access the local Odoo PostgreSQL DB (Docker postgres service) with psql.
docker compose up -d
psql is installed locally.Read DB settings from:
docker/odoo_base.confdocker/odoo_local.conf (overrides base)Relevant keys in [options]: db_host, db_port, db_name, db_user, db_password.
Run this once per shell to load connection env vars automatically:
eval "$(python3 - <<'PY'
import configparser
cfg = configparser.ConfigParser()
cfg.read(['docker/odoo_base.conf', 'docker/odoo_local.conf'])
opt = cfg['options']
vals = {
'PGHOST': opt.get('db_host', 'localhost'),
'PGPORT': opt.get('db_port', '5432'),
'PGDATABASE': opt.get('db_name', 'postgres'),
'PGUSER': opt.get('db_user', 'odoo'),
'PGPASSWORD': opt.get('db_password', 'odoo'),
}
# Local docker-compose exposes postgres on localhost
if vals['PGHOST'] in ('postgres', 'db'):
vals['PGHOST'] = 'localhost'
for k, v in vals.items():
v = v.replace('"', '\\"')
print(f'export {k}="{v}"')
PY
)"
Then use:
psql
For inspection/debugging, prefer read-only sessions:
PGOPTIONS='-c default_transaction_read_only=on' psql
For one-off read-only queries:
PGOPTIONS='-c default_transaction_read_only=on' psql -c "SELECT id, name FROM res_partner ORDER BY id DESC LIMIT 10;"
psql -c "SELECT id, name FROM res_partner ORDER BY id DESC LIMIT 5;"
psql -c "
SELECT
id,
name,
create_date
FROM res_partner
ORDER BY id DESC
LIMIT 10;
"
psql
psql -c "
SELECT name, state, latest_version
FROM ir_module_module
ORDER BY name;
"
psql -c "
SELECT id, name, active, nextcall, lastcall
FROM ir_cron
ORDER BY id DESC
LIMIT 20;
"
queue_job installed)psql -c "
SELECT id, name, state, date_created, date_done
FROM queue_job
ORDER BY id DESC
LIMIT 20;
"
psql Meta Commandspsql -c "\\dt" # list tables
psql -c "\\dt *purchase*" # list tables by pattern
psql -c "\\d+ res_partner" # table structure
docker compose up -ddocker-compose.yml (5432:5432)PG* variablesPGDATABASE:
echo "$PGDATABASE"
DELETE, TRUNCATE, mass UPDATE) unless explicitly requested.