相关文章推荐
逃跑的键盘  ·  eclipse添加 task tags ...·  4 月前    · 
性感的香槟  ·  【Python开发手册】JWT ...·  1 年前    · 
大气的薯片  ·  ant design ...·  1 年前    · 

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属性来获得一个字符串表示形式的日期时间,而不会引发上述错误。

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

  •