gpt4 book ai didi

Django:进行原始 SQL 查询,传递多个/重复参数?

转载 作者:行者123 更新时间:2023-12-04 05:40:28 25 4
gpt4 key购买 nike

希望这应该是一个相当简单的问题,我只是对 Python 和 Django 了解不够,无法回答它。

我在 Django 中有一个原始 SQL 查询,它采用六个不同的参数,其中前两个(centreLat 和 centerLng)分别重复:

query = "SELECT units, (SQRT(((lat-%s)*(lat-%s)) + ((lng-%s)*(lng-%s)))) AS distance FROM places WHERE lat<%s AND lat>%s AND lon<%s AND lon>%s ORDER BY distance;"
params = [centreLat,centreLng,swLat,neLat,swLng,neLng]
places = Place.objects.raw(query, params)

我如何构建 params对象和 query字符串,以便他们知道要重复哪些参数以及在哪里?

最佳答案

您(至少)有两个选择。您可以按照它们需要出现的顺序在列表中包含这些重复参数 - 这意味着您最终会在列表中多次使用相同的值,如下所示:

params = [centreLat,centreLng,swLat,neLat,swLng,neLng,centreLat,centreLng]

或者,您可以使用字典命名每个参数,而不是仅使用“%s”,您可以使用“%(name)s”,如下所示:
query = "SELECT units, (SQRT(((lat-%(lat)s)*(lat-%(lat)s)) + ((lng-%(lng)s)*(lng-%(lng)s)))) AS distance FROM places WHERE lat<%(lat)s AND lat>%(lat)s AND lon<%(lng)s AND lon>%(lng)s ORDER BY distance;"
params = {'lat':centreLat,'lng':centreLng}

(不要逐字复制该代码,我确定这不是您真正需要的)

关于Django:进行原始 SQL 查询,传递多个/重复参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2944261/

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