On 3/3/21 1:51 PM, Hans Ginzel wrote:
How to insert DEFAULT value, please?

import psycopg2
from psycopg2.sql import DEFAULT    # https://www.postgresql-archive.org/Inserting-default-values-into-execute-values-td6130148.html

db = psycopg2.connect(host='host', dbname='db')
cursor = db.cursor()
cursor.execute("DROP TABLE IF EXISTS test_default")
cursor.execute("CREATE TABLE test_default(i int NOT NULL DEFAULT 1)")
cursor.execute("INSERT INTO test_default VALUES (%s)", (DEFAULT,))

cursor.execute("DROP TABLE IF EXISTS test_default")
cursor.execute("CREATE TABLE test_default(j jsonb NOT NULL DEFAULT '{}'::jsonb)")
cursor.execute("INSERT INTO test_default VALUES (%s)", (DEFAULT,))

For both cases I get
psycopg2.ProgrammingError: can't adapt type 'SQL'

You need to do something like:

cur.execute(sql.SQL("INSERT INTO test_default VALUES ({})").format(DEFAULT))


Thank you in advance,
HG




--
Adrian Klaver
adrian.kla...@aklaver.com


Reply via email to