Am 04.09.25 20:21 schrieb(en) Adrian Klaver: > > "Psycopg 3 sends the query and the parameters to the server separately, > > instead of merging them on the client side. Server-side binding works > > for normal SELECT and data manipulation statements (INSERT, UPDATE, > > DELETE), but it doesn’t work with many other statements. For instance, > > it doesn’t work with SET or with NOTIFY:" > > As example: > > import psycopg2 > import psycopg > > conpsyc2 = psycopg2.connect("dbname=test user=postgres") > conpsyc3 = psycopg.connect("dbname=test user=postgres") > > cur2 = conpsyc2.cursor() > cur3 = conpsyc3.cursor() > > cur2.execute("select * from csv_test where id = %s", [1]) > cur3.execute("select * from csv_test where id = %s", [1]) > > yields: > > --cur2 > 2025-09-04 11:17:30.246 PDT [29695] postgres@test LOG: statement: BEGIN > 2025-09-04 11:17:30.246 PDT [29695] postgres@test LOG: statement: > select * from csv_test where id = 1 > > --cur3 > 2025-09-04 11:18:07.158 PDT [29703] postgres@test LOG: statement: BEGIN > 2025-09-04 11:18:07.159 PDT [29703] postgres@test LOG: execute > <unnamed>: select * from csv_test where id = $1 > 2025-09-04 11:18:07.159 PDT [29703] postgres@test DETAIL: Parameters: > $1 = '1' Very nice example! Looks as if the (anyway broken) script should be migrated to the the newer Python module – which, looking into the docs, shouldn't be too complex… Thanks a lot for all your helpful insight, Albrecht.
Attachment:
openpgp-digital-signature.asc
Description: This is a digitally signed message part.