Is there a way to log the Python/Django traceback from within a PostgreSQL trigger?
No, no hay
- La consulta (SQL) se ejecuta en el servidor DBMS , y también lo es el código dentro del disparador
- El código Python se ejecuta en el cliente que es un proceso diferente, posiblemente ejecutado por un usuario diferente, y tal vez incluso en una máquina diferente.
La única conexión entre el servidor (que detecta la condición) y el cliente (que necesita realizar el volcado de pila) es el socket conectado. Puede intentar ampliar la respuesta del servidor (si la hay) mediante algún código de estado, que utiliza el cliente para apilarse. Esto solo funcionará si el activador es parte de la transacción actual, no de algún proceso no relacionado.
La otra forma es:registro masivo. Haga que el DBMS escriba cada envió SQL a su archivo de registro. Esto puede generar grandes cantidades de entradas de registro, que debe inspeccionar.