我需要将部分原始sql查询传递给sqlalchemy过滤器,如
s.query(account).filter("coordinate <@> point(%s,%s) < %s"%(lat,long,distance))
是的,我试图在postgresql中使用earthdistance函数。
当然,我可以使用PostGis和GeoAlchemy2,但我想知道这类问题的一般解决方案。
我知道sqlalchemy可以安全地传递原始sql查询。
result = db.engine.execute("select * coordinate <@> point(:lat,:long) < :distance",**params)
是否有任何类似的函数可用于绑定部分(?)sql查询的参数?我想有人实现像func.ll_to_earth这样的自定义sql函数已经使用了这个函数。
答案 0 :(得分:2)
查询时有.params()
。试试这个:
query = s.query(account).filter(
"coordinate <@> point(:lat, :long_) < :dist").params(
lat=lat, long_=long_, dist=distance)
并且there is the documentation就可以了。
注意:我重命名了你的long
param,因为在python中有一个名为__builtin__
(long int)的long
,为了显而易见的原因,最好不要覆盖已经使用过的单词。