添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

object of type datetime is not json serializable sqlalchemy

这个错误的原因是因为 datetime 类型的对象不能被直接序列化成 JSON 格式,而在 SQLAlchemy 中,日期时间类型的字段默认会被映射成Python内置的 datetime 类型。

为了解决这个问题,你需要在将对象转换为 JSON 格式之前将 datetime 对象转换为字符串类型。在Python中,你可以使用 strftime() 函数将 datetime 对象转换为字符串。

以下是一个将 datetime 类型转换为字符串的示例代码:

from datetime import datetime
now = datetime.now()
now_str = now.strftime("%Y-%m-%d %H:%M:%S")
print(now_str)

在这个示例中,now_str将是当前日期时间的字符串表示形式,格式为YYYY-MM-DD HH:MM:SS。你可以将这个字符串序列化为JSON格式,而不会引发上述错误。

如果你需要在SQLAlchemy中将datetime类型的字段转换为字符串,你可以在模型类中使用@property装饰器和strftime()函数,如下所示:

from datetime import datetime
from sqlalchemy import Column, Integer, String, DateTime
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
class MyModel(Base):
    __tablename__ = 'my_table'
    id = Column(Integer, primary_key=True)
    created_at = Column(DateTime, default=datetime.now())
    @property
    def created_at_str(self):
        return self.created_at.strftime("%Y-%m-%d %H:%M:%S")

在这个示例中,我们添加了一个名为created_at_str的新属性,它返回created_at属性的字符串表示形式。现在,当你在查询MyModel对象时,你可以使用created_at_str属性来获得一个字符串表示形式的日期时间,而不会引发上述错误。

希望这个解决方案对你有所帮助。

  •