Las filas devueltas por pyodbc no son serializables JSON

Estoy tratando de recuperar las filas de una tabla usando la biblioteca pyobc en Python.

Pude recuperar las tablas y los campos de una tabla con éxito. Ahora tengo una tabla llamada “apx_roomtypes” con los datos de la siguiente manera,

introduzca la descripción de la imagen aquí

Sin embargo, cuando agrego las filas de pyodbc a una lista y luego trato de volcar la lista a JSON, aparece el error

Error de tipo: (1, ‘Estándar’, ‘Para 5 miembros’, 123) no es serializable JSON

Aquí está el código de python :

class execute_query: def GET(self,r): web.header('Access-Control-Allow-Origin', '*') web.header('Access-Control-Allow-Credentials', 'true') cnxn = pyodbc.connect(connection_string) data = [] cursor = cnxn.cursor() query = web.input().query cursor.execute(query) rows = cursor.fetchall() for row in rows: data.append(row) return json.dumps(data) 

¿Cómo puedo solucionar este error?

Cuando está iterando sobre rows , cada row es una instancia de Row y no una list . Puede convertirlo en una lista (que se puede serializar mediante JSON) de la siguiente manera:

 rows = cursor.fetchall() for row in rows: data.append([x for x in row]) # or simply data.append(list(row)) 

Si desea que devuelva un diccionario de pares clave / valor en lugar de una lista de valores, mire esta respuesta .