Tôi muốn gọi hàm plpgsql thông qua psycopg2 và xem các thông báo cảnh báo. tức là, tôi có chức năng này:Nhận tin nhắn cảnh báo qua psycopg2
create or replace function test_warning() returns void as $$
begin
raise warning 'this is only a test';
end;
$$
language plpgsql;
và gọi nó như vậy trong python:
import psycopg2
conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.callproc("test_warning")
# or so:
cursor.execute('SELECT test_warning()')
Thật không may là thông điệp cảnh báo theo quy định tại plpgsql không xuất hiện bất cứ nơi nào trong đầu ra python. Có cách nào để nhận thông điệp cảnh báo được in trong đầu ra python không?
Cảm ơn bạn rất nhiều, tính năng này hoạt động. Nhưng nếu tôi sử dụng cùng một kết nối cho nhiều con trỏ thì sao? Tôi đã thử đặt lại thông báo như vậy: 'conn.notices = {}' nhưng tôi có ngoại lệ TypeError: thuộc tính chỉ đọc. Và tôi có thể nhận được cảnh báo trong khi chức năng được thực thi không? Nói, hàm tăng cảnh báo và sau đó là ngoại lệ: Tôi muốn xem cảnh báo trước khi ngoại lệ được nâng lên. –
@Tomm Updated ... –
@Tomm bạn có thể xóa thông báo bằng 'del conn.notices [:]'. Bạn không thể có các thông báo trong khi thực hiện trong chế độ đồng bộ. Có lẽ trong chế độ async có nhưng tôi chưa bao giờ thử nó. – piro