Insertar SQL en Postgres con Psycopg2 ExecuteValues

Simplemente estoy tratando de insertar una nueva fila en una base de datos existente de Postgres con la función executeValues ​​del módulo Python Psycopg2. Estoy usando esto porque en el futuro tendré que hacer un inserto por lotes, pero por ahora solo estoy probando una fila.

Aquí está el código:

import psycopg2 from psycopg2.extras import * # Connect to database try: conn = psycopg2.connect("dbname='test' user='postgres' host='localhost' password='serengeti'") conn.autocommit = True except: print "I am unable to connect to the database" cur = conn.cursor() SQL = "INSERT INTO sample (id,name) VALUES %s" valuesList = [] valuesList.append((5,'wolf')) **The problem appears to be here somewhere** valuesList.append(('(SELECT id FROM city WHERE name =''Boston'')','tiger')) execute_values(cur,SQL,valuesList,template=None, page_size=1000000) 

El error que estoy recibiendo se muestra en esta imagen:

error

‘Muestra’ es la tabla a insertar. Contiene dos campos: ‘id’ (entero) y ‘nombre’ (texto). ‘Ciudad’ es otra tabla en la misma base de datos que contiene un campo ‘id’ (entero) y ‘nombre’ (texto) con una fila donde nombre = ‘Boston’ que ya se ha completado.

Creo que el error está en algún lugar de la statement SELECT dentro de la lista de valores.

¿Alguien puede ayudar?

¡Gracias!