SQLAlchemy load_only y aplazar

He intentado usar los métodos SQLAlchemy load_only y diferir para enviar solo ciertas columnas desde la base de datos, pero parece que no puedo hacer que funcionen.

Aquí está el código que estoy usando:

query = db.session.query(Vendor).options(defer('ownerName', 'boxSize', 'boxes', 'lastPickUp', 'zone', 'code')) return response( query ) 

* La respuesta es un método jsonify personalizado que escribí debido a las necesidades específicas de mi aplicación.

Estoy esperando la respuesta:

{

“Respuesta”: [

 { "address": "10th and SW Alder St", "city": "Portland, OR", "id": 1, "keywords": "Tacos, Mexican", "latitude": 45.5206464, "longitude": -122.68157559999997, "name": "Taco Ted", "phone": null, "website": null, }, 

Pero en cambio estoy recibiendo:

{

“Respuesta”: [

 { "address": "10th and SW Alder St", "boxSize": null, "boxes": 10, "city": "Portland, OR", "id": 1, "keywords": "Tacos, Mexican", "lastPickUp": "01/12/2014", "latitude": 45.5206464, "longitude": -122.68157559999997, "name": "Taco Ted", "ownerName": null, "phone": null, "website": null, "zone": 1 }, 

Lo que significa que mi aplazamiento está siendo ignorado. He intentado usar load_only para resolver este problema también, pero ambos parecen no hacer ninguna diferencia. ¿Que me estoy perdiendo aqui?

(Si hay alguna diferencia, estoy usando una base de datos sqlite para el desarrollo).

ese no es el uso correcto de deferred() y el caso de uso que tiene aquí es por qué se agregó load_only() . cada llamada a deferred() solo hace un atributo a la vez; El hecho de que acepte muchas cadenas tiene que ver con las “rutas” en la consulta, que no es lo que estamos tratando aquí.

load_only () evitará que los atributos que no tienen nombre se carguen en la consulta inicial:

 load_only('ownerName', 'boxSize', 'boxes', 'lastPickUp', 'zone', 'code') 

sin embargo, si su método jsonify aún utiliza esos atributos, como somevendor.boxSize , emitirá el SQL en ese momento. así que depende también de cómo estés tirando de los atributos.