pyodbc 返回的行不可 JSON 序列化

2024-04-28

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

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

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

TypeError: (1, 'Standard', 'For 5 Members', 123) 不可 JSON 序列化

这里是蟒蛇代码:

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)

我该如何修复这个错误?


当你迭代时rows, each row is a Row实例而不是list。您可以将其转换为列表(可 JSON 序列化),如下所示:

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

如果您希望它返回键/值对的字典而不是值列表,则采用看看这个答案 https://stackoverflow.com/a/16523148/276949.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

pyodbc 返回的行不可 JSON 序列化 的相关文章

  • 如何使用 QWebView 显示 html。 Python?

    如何在控制台中显示 HTML 格式的网页 import sys from PyQt4 QtGui import QApplication from PyQt4 QtCore import QUrl from PyQt4 QtWebKit i
  • 每个刻度标签都有不同的颜色

    我正在尝试使用 matplotlib python 3 5 创建一个散点图 其中 x 轴上的每个刻度都有不同的颜色 这怎么可能 例如 假设 x 刻度为 Mo Tu We Th Fr Sa Su 现在我希望 Mo 是绿色的 Tu 是蓝色的 等
  • 如何创建毫秒粒度的 Python 时间戳?

    我需要一个自纪元以来的毫秒 ms 时间戳 这应该不难 我确信我只是缺少一些方法datetime或类似的东西 实际上微秒 s 粒度也很好 我只需要亚 1 10 秒的计时 例子 我有一个每 750 毫秒发生一次的事件 假设它检查灯是否打开或关闭
  • 使用DockerOperator时如何同时使用xcom_push=True和auto_remove=True?

    Problem 跑步时DockerOperator with xcom push True xcom all True and auto remove True 任务会引发错误 就好像容器在读取其内容之前被删除一样STDOUT Exampl
  • 导入 scipy.stats 时,出现“ImportError: DLL load failed: 找不到指定的过程”

    我无法导入 scipy stats 并收到以下错误 但不知何故 import scipy as sp 仍然可以正常工作 其他库如numpy pandas都可以毫无问题地导入 我尝试在 Anaconda 中重新安装 scipy 1 2 1 降
  • Emacs:在缓冲区求值期间将参数传递给下级 Python shell

    最近我开始使用 Emacs 作为 Python IDE 它不太直观 我现在遇到的问题是当使用 C c C c 评估缓冲区时如何将命令行参数传递给下级 python shell 感谢帮助 这似乎并不容易实现 管理的劣质流程python el模
  • 动态SQL生成列名?

    我有一个查询 我正在尝试将行值转换为列名称 目前我正在使用SUM Case As ColumnName 声明 像这样 SELECT SKU1 SUM Case When Sku2 157 Then Quantity Else 0 End A
  • Python 排列(包括子字符串)

    我遇到过这个帖子 如何在Python中生成列表的所有排列 https stackoverflow com questions 104420 how to generate all permutations of a list in pyth
  • 如何在 Django 1.4 中自定义管理过滤器

    我是 Python 和 Django 开发的新手 我从社区提供的易于阅读的示例中学到了很多东西 但最近我想为 Django 附带的管理控制台实现一个自定义的管理过滤器 我进行了很多搜索 只发现了一些过时的方法来完成它 例如 Django 1
  • 更新或插入 MySQL Python

    如果记录已存在 我需要更新一行 如果不存在 我需要创建一个新记录 我理解 ON DUPLICATE KEY 将使用 MYSQLdb 完成此操作 但是我无法使其正常工作 我的代码如下 cursor database cursor cursor
  • 如何避免在matplotlib中调用latex(输出到pgf)

    我使用 matplotlib 及其 pgf 后端来生成包含在 LaTeX 投影仪文档中的绘图 当我使用未定义的乳胶命令时 我遇到了麻烦 但对于我的应用程序 我不需要 matplotlib 来使用 Latex 生成标签或注释 我只想要正确的
  • TSQL - 创建从日期表,同时忽略带条件的中间步骤

    我在 MS SQL 服务器中有以下表结构 现在 我想根据以下规则获取每个 id 的 in 日期 如果第二天 23 59 出 和 00 00 进 则忽略这些 如果同一天有 out 和 in 请忽略这些 例如我应该得到以下结果 id in ou
  • 在 grpc python 中处理异步流请求

    我试图了解如何使用双向流处理 grpc api 使用 Python API 假设我有以下简单的服务器定义 syntax proto3 package simple service TestService rpc Translate stre
  • 了解字典的深度

    假设我们有这个字典 d a 1 b c 了解嵌套的最直接方法是什么depth of it 您需要创建一个递归函数 gt gt gt def depth d if isinstance d dict return 1 max map dept
  • gstreamer 中的无缝视频循环

    我正在尝试使用 gstreamer 循环播放视频 它是 python 绑定 第一次尝试是hook EOSmessage并为管道生成搜索消息 import gi gi require version Gst 1 0 from gi repos
  • 在 python 中使用 re.sub 将字母变成大写?

    在许多编程语言中 以下内容 find foo a z bar并替换为GOO U 1GAR 将导致整个匹配项变为大写 我似乎无法在 python 中找到等效项 它存在吗 您可以将函数传递给re sub http docs python org
  • 如何重命名 SQL Server 中名称中带有方括号的内容?

    我的一张桌子上有一列 周围有方括号 Book Category 我想重命名为Book Category 我尝试了以下查询 sp rename BookPublisher Book Category Book Category COLUMN
  • 如何在Python中显示坐标网格线的变换?

    假设我有常规的笛卡尔坐标系 x y 并且我考虑一个矩形网格区域 D 分成小方块 我想看看域 D 如何在 Python 中的坐标变换 T x y gt u x y v x y 下映射 我正在寻找这样的东西 See here https mat
  • VBA仅清除数据透视表缓存,但保留数据透视表结构

    如何使用VBA清除数据透视表缓存 但不破坏数据透视表结构 我的数据透视表已连接到外部数据源 SQL 源决定哪个用户应该查看数据的哪一部分 当表刷新时 源会填充该表 我想保存 Excel 文件并使用干净的数据透视表 内部没有数据 分发它 结果
  • Sql Server 字符串到日期的转换

    我想像这样转换一个字符串 10 15 2008 10 06 32 PM 转换为 Sql Server 中的等效 DATETIME 值 在 Oracle 中 我会这样说 TO DATE 10 15 2008 10 06 32 PM MM DD

随机推荐