我正在实现平均查询,但是如何在SQLAlchemy中显式定义double,如下面的PostgreSQL查询中所定义的那样:
SELECT avg((tags->>'price')::double precision) from parcel_table
Python:
parcel_table.query.\
with_entities(
func.avg(parcel_table.tags["price"]).
label('average`')).\
filter(
parcel_table.time_stamp.between("'2017-01-01 00:00:000'",
"'2017-10-01 00:00:000'"),
parcel_table.name== 'sakshi').\
first()
答案 0 :(得分:0)
表达式
(tags->>'price')::double precision
成为JSON index operation with a cast在SQLAlchemy中有一个很好的快捷方式:
from sqlalchemy.dialects import postgresql
parcel_table.tags["price"].astext.cast(postgresql.DOUBLE_PRECISION)
请注意,“价格”这个名称暗示这是关于金钱的,而floating point numbers and money are a bad match通常也是如此。