gpt4 book ai didi

python - sqlalchemy 过滤器中的安全参数绑定(bind)

转载 作者:太空宇宙 更新时间:2023-11-04 03:32:24 24 4
gpt4 key购买 nike

我需要将部分原始 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)

是否有任何类似的函数可用于绑定(bind)部分(?)sql 查询的参数?我想有人实现了像 func.ll_to_earth 这样的自定义 sql 函数已经使用了这个函数。

最佳答案

查询时有.params()。试试这个:

query = s.query(account).filter(
"coordinate <@> point(:lat, :long_) < :dist").params(
lat=lat, long_=long_, dist=distance)

there is the documentation在上面。

注意:我重命名了你的long参数,因为在python中已经有一个名为long(long int)的__builtin__,这是一个很好的做法出于明显的原因不要覆盖已经使用过的单词。

关于python - sqlalchemy 过滤器中的安全参数绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30596766/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com