python - SQLAlchemy 如何使用 timezone=UTC 加载日期(没有时区存储的日期)

标签 python sqlalchemy flask-sqlalchemy

我有一个日期列定义为的模型:

created_on = db.Column(db.DateTime, default=db.func.now(), nullable=False)

日期以 tz_info=None 出现,这是正确的,因为日期已存储 没有时区信息。

如果我打印日期:

print(my_object.created_on.isoformat())

我得到这个格式

2014-04-26T17:46:27.353936

我想要一个 UTC 时区指示符,例如:

2014-04-26T17:46:27.353936Z

有没有办法在模式配置中定义这种行为?

SQLAlchemy 有,timezone=Boolean

sqlalchemy.types.DateTime(timezone=False)

因为我希望存储没有时区。

最佳答案

您需要一个自定义数据类型,如下所述:http://docs.sqlalchemy.org/en/rel_0_9/core/types.html#custom-types

具体来说,像这样:

import pytz  # from PyPI

class AwareDateTime(db.TypeDecorator):
    '''Results returned as aware datetimes, not naive ones.
    '''

    impl = db.DateTime

    def process_result_value(self, value, dialect):
        return value.replace(tzinfo=pytz.utc)

然后像这样制作列:

created_on = db.Column(AwareDateTime, default=db.func.now(), nullable=False)

关于python - SQLAlchemy 如何使用 timezone=UTC 加载日期(没有时区存储的日期),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23316083/

相关文章:

python - Flask 棉花糖模式中的日期时间格式

python - 有没有办法在不运行整个类的情况下将类作为参数传递给函数?

使用自动加载的 Python 和 SQLAlchemy 经典映射 : Mapper could not assemble any primary key columns for mapped table

python - Django:连接来自多个关联模型的数据的最佳方式

python - SQLAlchemy 使用路由查询错误的表

python - 提供存储在 SQLAlchemy LargeBinary 列中的图像

python - 重试失败的 sqlalchemy 查询

python - SQLAlchemy func.count 带过滤器

python - 无法让 Django 本地化工作

python - 如何遍历 unicode 符号,而不是 python 中的字节?