python - 如何将整数列表插入到数据库查询的字符串中 - Python 3
问题描述
我正在尝试使用游标执行在 django 应用程序中进行查询,但是当我将列表传递给查询字符串时,它带有引号并返回以下错误:
psycopg2.DataError:整数的无效输入语法:“139,212,933,2303,2613”第 1 行:...ados_ibge.sociodemografia_rmc sd WHERE sd.gid IN ('139,212,9...
这是我到目前为止一直在处理的代码..
gids = self.request.GET.getlist('gid')
if gids:
with connection.cursor() as cursor:
g = ','.join(gids)
cursor.execute("SELECT * FROM poi.farmacias_rmc f, dados_ibge.sociodemografia_rmc sd WHERE sd.gid IN (%s) AND ST_Intersects(sd.geom, f.geom) = true", [g])
rows = cursor.fetchall()
解决方案
您不应该将列表转换gids
为字符串,而是转换为元组:
cursor.execute("""
SELECT * FROM poi.farmacias_rmc f, dados_ibge.sociodemografia_rmc sd
WHERE sd.gid IN %s
AND ST_Intersects(sd.geom, f.geom) = true
""", [tuple(gids)])
Python 列表会自动转换为 SQL 数组,元组会自动转换为 SQL 列表。
推荐阅读
- swift - 快速结束对 Firebase 的观察
- javascript - 我想知道为什么我不能将图片添加到 .img 类(通过 css)以及为什么当我单击它时注册按钮不会更改为登录
- amazon-web-services - ```卷曲:(52)来自服务器的空回复```来自aws ECR的错误响应
- mysql - MySQL NOT LIKE 语句返回“like”结果
- flutter - 试图找出设备的当前位置,它显示“MissingPluginException”
- scala - How to explode a struct column with a prefix?
- reactjs - 当 React 功能组件 (React.FC) 时,Typescript 不会抱怨
) 错误的道具是作为道具发送的吗? - codenameone - 代号一 TextComponent
- html - Css 没有对我的 HTML 网页进行更改,尽管它们已正确链接
- python-3.x - Python:有没有办法让类的构造函数生成其子类之一的实例?