当前位置:  开发笔记 > 编程语言 > 正文

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

如何解决《pyodbc返回的行不是JSON可序列化的》经验,为你挑选了1个好方法。

我试图在Python中使用pyobc库检索表的行.

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

在此输入图像描述

但是,当我将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> Martin Konec..:

当你迭代时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))

如果您希望它返回键/值对的字典而不是值列表,那么请查看此答案.


`list(row)`应该没有生成器表达式.
推荐阅读
小妖694_807
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有