【问题标题】:Converting datetime sql server type to JSON python将 datetime sql server 类型转换为 JSON python
【发布时间】:2020-07-31 01:23:20
【问题描述】:

我为我的 sql server azure 数据库开发了一个 API,部署了 azure 函数。

我有 Python 代码,它使用请求来调用也在 Python 中的 API。

我有一个问题我无法解决,

我的目标描述: 我使用 API 从一个表中获取 10K 条记录,并希望将它们插入到一个新表中,因为请求是 HTTPS,我正在使用 json.dumps 将查询结果转换为 json。

问题: 在我的大多数数据库表中,我都有一个填充了 sysdatetime() sql 函数的字段。 当尝试执行插入命令(我正在使用 executemany)时,我得到: '字符串数据,右截断:长度52缓冲区46'

示例: 我有 10K 列表列表,在每个列表中我有以下格式的项目 '2020-04-15 05:02:10.023000'。 从另一方面: '2020-04-14 00:00:00' 不会引发错误。

我正在寻找的解决方案: 为了能够在我的代码中转换为 Json(我不希望更改 API 代码),而无需一一遍历所有记录。

有什么想法吗?

谢谢,

尼尔

【问题讨论】:

  • 您能否添加一些代码以及您收到的 API 日期的一些示例,以及您需要哪种格式?
  • 当我将行发送到我正在使用的 API 时:self.Data=json.dumps(Params,indent=4, sort_keys=False 在 API 端我正在使用 Data=req.get_json( )在我写的示例中,您可以看到从数据库获取的格式,这就是它在 API 中的格式:2020-04-15 05:02:10.023000

标签: python json sql-server


【解决方案1】:

如果我对问题的理解正确,我认为你的数据长度有问题。如您所见:

'2020-04-14 00:00:00'

你没有遇到任何问题,但是当更改为:

'2020-04-15 05:02:10.023000'

由于数字太多而出现错误...解决此问题的最简单方法是截断字符串。因此,当您将数据传递到新表时,您应该执行以下操作:

if "." in data:
    data=data[:(data.rfind(':'))+3]
    #do whatever with the data now
else:
    #do whatever with the data

【讨论】:

  • 谢谢,是的,我知道这是问题所在,但我想避免超过 10K 条记录 * 每条记录中的项目数
  • @NirElbaz 然后我会更改应用程序内数据的浮动精度。我不知道,但您可能不需要毫秒才能出现。
  • 谢谢,这就是我要做的,我试图避免它,但我想我没有任何其他选择
猜你喜欢
  • 2020-02-02
  • 2015-05-10
  • 2019-09-02
  • 2013-11-29
  • 1970-01-01
  • 2015-02-13
  • 1970-01-01
  • 1970-01-01
  • 2017-02-07
相关资源
最近更新 更多