在我的Flask模型中,我具有以下列:
datetime = db.Column(db.DateTime, nullable=False, default=datetime.now)
当我从PostgreSql数据库填充行时,得到以下信息:
2020-07-03 18:12:49.362271
2020-07-04 09:21:34.644202
现在,我想使用to_char
Postgresql中的函数来格式化那些结果。查询应为:
select to_char(datetime, 'YYYY-MM-DD HH24:MI:SS') as datetime from order_detail;
结果是这样的:
---------------------
2020-07-03 18:12:49
2020-07-04 09:21:34
(2 rows)
当查询order_detail
表时,如何告诉Flask-SqlAlchemy执行该函数?
重要提示:我不想在Flask应用程序中进行格式化,而是想让Postgresql格式化结果。
使用column_property()
和func()
。假设您的模型名为Foo
:
from sqlalchemy import func
from sqlalchemy.orm import column_property
class Foo(db.Model):
id = db.Column(db.Integer, primary_key=True)
datetime = db.Column(db.DateTime, nullable=False, default=datetime.now)
formatted_datetime = column_property(func.to_char(datetime, 'YYYY-MM-DD HH24:MI:SS'))
# print(Foo.query.all()[0].formatted_datetime)
# ->'2020-07-04 06:59:09'
如果模型的属性名称为datetime
,这很重要,则需要为基础列赋予其他属性名称,并使用其name
kwarg引用该列。
class Foo2(db.Model):
__tablename__ = 'foo'
id = db.Column(db.Integer, primary_key=True)
orig_datetime = db.Column(db.DateTime, name='datetime', nullable=False, default=datetime.now)
datetime = column_property(func.to_char(orig_datetime, 'YYYY-MM-DD HH24:MI:SS'))
# print(Foo2.query.all()[0].datetime)
# ->'2020-07-04 06:59:09'
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句