【问题标题】:TypeError: datetime.datetime() is not JSON serializableTypeError: datetime.datetime() 不是 JSON 可序列化的
【发布时间】:2017-10-24 19:19:43
【问题描述】:

我对 MongoDB 中的时间戳有疑问。

所以情况是这样的:

我读入了 json 并为它们添加了时间戳:

my_json['insertTime'] = datetime.datetime.now()
mongodb.collection.insert_one(my_json)

会产生这样的数据库:

"insertTime" : ISODate("2017-05-24T12:39:34.844Z")

在我从数据库中读取它并尝试将相同的文档写入另一个 mongoDB 表后,我收到以下错误:

TypeError: datetime.datetime(2017, 5, 24, 12, 39, 46, 671000) is not JSON serializable

我已经阅读了将日期时间转换为字符串值的解决方案,但我希望它采用 ISODate 格式,就像第一个表中一样。

这就是从表 A 中获取时间戳后的样子:

'insertTime': datetime.datetime(2017, 5, 24, 12, 39, 46, 671000)

我应该怎么做才能将它插入到具有相同格式(ISODate)的第二个表中?

PS:我将数据加载到表B中的方式如下:

tableB.insert_one(json.loads(json.dumps(docFromTableA)))

【问题讨论】:

    标签: mongodb datetime pymongo isodate


    【解决方案1】:

    无需通过 JSON 表示即可将文档保存到 MongoDB。做吧:

    tableB.insert_one(docFromTableA)
    

    MongoDB 的原生数据格式不是 JSON,它是 BSON,一种比 JSON 类型多得多的二进制结构。 PyMongo 自动在 BSON 和 Python 字典之间转换 MongoDB 文档。

    【讨论】:

      猜你喜欢
      • 2016-06-22
      • 1970-01-01
      • 2016-08-02
      • 2019-02-08
      • 2013-05-11
      • 2014-08-13
      • 2019-09-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多