我有一个日期列定义为的模型:
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/