在 Azure Table 存储中存储日期时间字段

Storing DateTime fields in Azure Table Storage

我正在尝试在我的 Azure Table 存储中存储一个 ISO 格式的 DateTime。但每次我尝试时,结果都是这种字符串格式:

这是我总结的有效代码 运行:

import jsons
from azure.functions import Out

def main(parameterTableOutputJSON: Out[str]):
    row = {'ReadOn': '2021-04-28T09:35:26.123456Z'}
    parameterTableOutputJSON.set(jsons.dumps(row))

当然我的真实代码也有 PartitionKey 和 RowKey 列,但我不能在这里显示它们。

我怎样才能像这样在 Azure Table 存储中插入日期时间:2021-04-28T09:35:26.123456Z
而不是这样:04/28/2021 09:35:26

Azure Table 存储文档告诉我它支持 ISO 格式的日期时间...

我找到了解决我自己问题的方法。

jsons.dumps 方法默认去除毫秒。这会生成格式如下的日期时间:2021-04-28T09:35:26Z
在 Azure Table 存储中不支持此格式作为 DateTime。

我的代码的最后一行是这样写的,问题解决了:

parameterTableOutputJSON.set(jsons.dumps(row, strip_microseconds=False))

使用最新的 Azure Data Tables 库,您可以直接在您的实体中使用 Python datetime 对象并提交它进行创建。这是一个示例片段:

from azure.data.tables import TableClient
from datetime import datetime

client = TableClient.from_connection_string(<my_conn_str>)
my_entity = {
    "PartitionKey": <my_pk>,
    "RowKey": <my_rk>,
    "ReadOn": datetime(2021, 4, 28, 9, 36, 26, 123456)
}
client.upsert_entity(my_entity)

免责声明:我为 Python 团队开发 Azure SDK。