psycopg2.ProgrammingError:列不存在

问题描述:

我收到以下错误,当我试图通过python.roll_no查询数据库是每个表的关键。psycopg2.ProgrammingError:列不存在

File "class_room.py", line 30, in get 
cursor.execute("select first_name from class_room where keyword=%s",  (roll_no)) 
psycopg2.ProgrammingError: column "keyword" does not exist 
LINE 1: select first_name from class_room where keyword='3' 


             ^
12:21 class_room=# \d+ class_room 
           Table "public.class_room" 
    Column | Type |   Modifiers   | Storage | Stats target | Description 
------------+---------+---------------------------+----------+--------------+-  ------------ 
roll_no | integer | not null     | plain |    | 
first_name | text | not null default ''::text | extended |    | 
last_name | text | not null default ''::text | extended |    | 
marks  | integer |       | plain |    | 
Indexes: 
    "class_room_pkey" PRIMARY KEY, btree (roll_no) 
Has OIDs: no 



user:~/pathclass_room $ cat schema.sql 
create table class_room (
roll_no int primary key, 
first_name text not null default '', 
last_name text not null default '', 
marks int 
); 
+1

什么是'keyword'?你没有这样的专栏。 – sagi

+0

像@sagi上面写的。有时我在使用''''而不是''''''时,类似的错误,反之亦然在字符串的SQL查询。但在这里看来你没有专栏。 – MartinP

更改为:

cursor.execute("select first_name from class_room where roll_no = %s", (roll_no,)) 

roll_no后不要忽略逗号。它将括号表达式变成一个元组。

+0

谢谢,这有帮助。 – supervirus