2017-11-17 1 views
0
에서 나는 평균에 대한 쿼리를 구현하고

을 정밀도를 두 배로 JSON에서 캐스팅하지만, PostgreSQL의 쿼리 아래에 정의 된대로 내가 어떻게 명시 적으로 SQLAlchemy의 이중 정의 할 수 있습니다 :명시 적으로 SQLAlchemy의

SELECT avg((tags->>'price')::double precision) from parcel_table 

파이썬 :

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

표현

(tags->>'price')::double precision 

JSON index operation with a cast 좋은의를 가지고 SQLAlchemy의에서 hortcut : 이름 "가격은"일반적으로,이 돈되는 암시하고 floating point numbers and money are a bad match 것이라고

from sqlalchemy.dialects import postgresql 

parcel_table.tags["price"].astext.cast(postgresql.DOUBLE_PRECISION) 

참고.

+0

with_entities가 파이썬에서 작동하지 않습니다.하지만 정확한 결과가 나오기 때문에 with_entities 데이터가 파이썬으로 들어오지 않습니다. – sakshi

+0

문제는 with_entities와 다릅니다. – sakshi

+0

문제는 astext.cast (postgresql) 때문입니다. DOUBLE_PRECISION) DOUBLE_PRECISION없이 다른 번호를 평균하면 잘 작동합니다. – sakshi