sqlalchemy自定义类型TypeDecorator储存时间时区到sqlite3

from sqlalchemy import  String, TypeDecorator

# 自定义类型
class DateTimeTZString(TypeDecorator):
    """指定函数名称"""
    impl = String
    def process_bind_param(self, value, dialect):
        if value is not None:
            # 为什么添加 sep参数,因为带有时区的python的datetime对象输出的文本是这样
            return value.isoformat(sep=' ', )
        return value

    def process_result_value(self, value, dialect):
        if value is not None:
            return datetime.fromisoformat(value.replace(' ', 'T'))
        return value

# 后续实现的字段实现
localtime: Mapped[datetime] = mapped_column(DateTimeTZString(), nullable=True)
posted @ 2024-06-05 10:48  meizhengchao  阅读(14)  评论(0编辑  收藏  举报