pyodbc返回的行不是JSON可序列化的

时间:2016-01-11 06:44:30

标签: python sql-server json

我正在尝试使用Python中的pyobc库检索表的行。

我能够成功检索表的表和字段。现在我有一个名为" apx_roomtypes"数据如下,

enter image description here

但是,当我将pyodbc行附加到列表然后尝试将列表转储到JSON时,我收到错误

  

TypeError:(1,'标准','对于5个成员',123)不是JSON可序列化的

这是 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)

如何解决此错误?

1 个答案:

答案 0 :(得分:16)

当您在rows上进行迭代时,每个row都是Row个实例,而不是list。您可以将其转换为列表(可以序列化JSON),如下所示:

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

如果您希望它返回键/值对的字典而不是值列表,请选择look at this answer