[英]Django: making raw SQL query, passing multiple/repeated params?
希望这应该是一个相当简单的问题,我只是不太了解Python和Django来回答它。
我在Django中有一个原始的SQL查询,它有六个不同的参数,前两个(centreLat和centreLng)都重复:
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}
(不要逐字复制该代码,我确信这不是你需要的)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.