TypeError:“int”对象不支持索引

新手上路,请多包涵

我有这个查询:

 some_id = 1

cursor.execute('
    SELECT "Indicator"."indicator"
    FROM "Indicator"
    WHERE "Indicator"."some_id" =   %s;', some_id)

我收到以下错误:

 TypeError: 'int' object does not support indexing

some_id 是一个 int 但我想选择 some_id = 1 的指标(或我决定放入变量的任何 #)。

原文由 nlr25 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.4k
2 个回答
cursor.execute('
    SELECT "Indicator"."indicator"
    FROM "Indicator"
    WHERE "Indicator"."some_id" =   %s;', [some_id])

这会将 some_id 参数转换为可索引的列表。假设您的方法像我认为的那样有效,这应该有效。

发生错误是因为在该方法的某处,它可能正在尝试迭代该输入,或直接对其进行索引。可能是这样的: some_id[0]

通过使它成为一个列表(或可迭代的),您允许它像这样索引到第一个元素。

您也可以通过这样做将其变成一个元组: (some_id,) 它具有不可变的优点。

原文由 Stephan 发布,翻译遵循 CC BY-SA 3.0 许可协议

类型转换 some_id 到字符串也可以。

 cursor.execute(""" SELECT * FROM posts WHERE id = %s """, (str(id), ))

原文由 stuckoverflow 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题