Jeff Ross <jross@xxxxxxxxxxxxxx> writes: > With plpython (both u and 3u) all I see printed is the ERROR part. > try: > check = plpy.execute("delete from inspection where bundle_id in > (select id from test_archive_20170401.load order by id)") > except plpy.SPIError as e: > plpy.notice("Error!", e) > postgres@testdb# select * from test_delete(); > NOTICE: ('Error!', ForeignKeyViolation('update or delete on table > "inspection" violates foreign key constraint > "inspection_weather_inspection_id_inspection_id_fk" on table > "inspection_weather"',)) > Is there a way to get the DETAIL part as well? It's not very well documented AFAICS, but a SPIError object has a "detail" attribute, so "e.detail" should help you. It looks like you might prefer to print "e.spidata", which seems to contain all the available fields. regards, tom lane