我有一个疑问:

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,但我想 Select 一些_id=1的指标(或者我决定放入变量的任何指标).

推荐答案

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

这会将some_id参数转换为一个可索引的列表.假设你的方法像我想的那样有效,这应该是可行的.

发生错误的原因是,在该方法的某个地方,它可能试图迭代该输入,或直接索引到该输入.可能是这样:some_id[0]

通过将其设置为列表(或iterable),可以将其索引到第一个元素中.

你也可以这样做,把它变成一个元组:(some_id,),它的优点是不可变.

Postgresql相关问答推荐

PostgreSQL权限如何工作?需要从表格中 Select 收件箱

当通过PostgreSQL FDW中的视图使用时,年龄函数的计算方式不同

即使不对订阅服务器进行任何修改,Postgres逻辑复制也可能发生冲突吗?

安装age-installation时出错

使用 GDB 调试器调试 AGE 代码的过程

带有附加组的时间刻度 interpolated_average

PostgreSQL pg_dump 创建 sql 脚本,但它不是 sql 脚本:有没有办法让 pg_dump 创建标准的 sql 脚本?

为什么在 PostgreSQL 中忽略查询超时?

heroku、postgreSQL、django、comments、tastepie:没有运算符匹配给定的名称和参数类型

Hibernate 将用户模型保存到 Postgres

推送到 Heroku 时出现带有 Postgres 的 Rails 迁移错误

如何将 postgres 数据库转换为 sqlite

postgresql 在查询中插入空值

timezone date_trunc 函数

将 PostgreSQL 配置为仅适用于 LOCALHOST 或指定的 ip + 端口

适配器 Ecto.Adapters.Postgres 未编译

仅在存在时重命名列

try 为 ror 应用程序设置 postgres,出现错误 - fe_sendauth:no password supplied

PostgreSQL - 作为表名的动态值

如何更改 PostgreSQL 中的 REFERENCES?