【问题标题】:Pyodbc + MSSQL 2017 generates JSON response to python appPyodbc + MSSQL 2017 生成对 python 应用程序的 JSON 响应
【发布时间】:2018-03-11 11:27:21
【问题描述】:

我的 python 应用程序通过 pyodbc 调用 MSSQL 2017 函数,函数查询响应在服务器端采用 JSON 格式。

cursor.execute("SELECT dbo.fnInvoiceJSON(%s,%s);" % (posted,vat)) row = cursor.fetchone()

在应用程序中返回的响应应该是 class 'pyodbc.Row。 如果我将其转换为字符串,我可以通过 requests.post 将此响应传递给其他 API 调用。

有没有办法将此响应转换为可访问的 python dict / JSON 对象?

【问题讨论】:

  • 如果fetchone() 返回一个包含单列的行对象,那么您可以改用fetchval()。详情here.
  • 感谢@Gord Thompson。 fetchval() 解决了这个问题。现在返回对象是字符串,从那里我可以将它转换为 dict 'json.loads(row)' 等等。

标签: json sql-server python-3.x pyodbc


【解决方案1】:

如问题中所述,在 pyodbc 下,fetchone() 返回一个 pyodbc.Row 对象,fetchall() 返回一个 pyodbc.Row 对象数组。

不过,pyodbc 也支持fetchval() 方法,该方法将返回结果集中第一行第一列的值(类似于C# 中的ExecuteScalar 方法)。 fetchval() 将值返回为对应的 Python 类型(例如,字符串、None 等)。

【讨论】:

    猜你喜欢
    • 2014-05-30
    • 2019-02-09
    • 1970-01-01
    • 2011-08-17
    • 1970-01-01
    • 2013-06-26
    • 1970-01-01
    • 2016-03-06
    • 1970-01-01
    相关资源
    最近更新 更多