On Wed, Mar 03, 2021 at 03:23:28PM -0800, Adrian Klaver wrote:
On 3/3/21 1:51 PM, Hans Ginzel wrote:
You need to do something like:
cur.execute(sql.SQL("INSERT INTO test_default VALUES ({})").format(DEFAULT))

Formating values into SQL statement is done by the execute(), isn't it?

I like the solution from
https://www.postgresql-archive.org/Inserting-default-values-into-execute-values-td6130148.html

https://www.postgresql-archive.org/Inserting-default-values-into-execute-values-td6130148.html

class Default(object):
  """Set up DEFAULT value for a field.

  When doing INSERT or UPDATE in Postgres one can use DEFAULT/default
  as the value to have the server use the default set on the field.
  """
  def __conform__(self, proto):
    if proto is psycopg2.extensions.ISQLQuote:
      return self
  def getquoted(self):
    return 'DEFAULT'

DEFAULT = Default()

cursor.execute("INSERT INTO test_default VALUES (%s)", (DEFAULT,))

Could this be added to the psycopg2 code, please?

H.


Reply via email to