curiouscat curiouscat - 7 months ago 14
SQL Question

TypeError: 'int' object does not support indexing

I have this query:

some_id = 1

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


I get the following error:

TypeError: 'int' object does not support indexing


some_id is an int but I'd like to select indicators that have some_id = 1 (or whatever # I decide to put in the variable).

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

This turns the some_id parameter into a list, which is indexable. Assuming your method works like i think it does, this should work.

The error is happening because somewhere in that method, it is probably trying to iterate over that input, or index directly into it. Possibly like this: some_id[0]

By making it a list (or iterable), you allow it to index into the first element like that.

You could also make it into a tuple by doing this: (some_id,) which has the advantage of being immutable.

Comments