2012-06-19 59 views
1

我想從一個PostgreSQL數據庫檢索一個變量中的值使用WHERE子句,但我收到一個錯誤。在PostgreSQL中的SELECT查詢

查詢是:

select age into x from employee where name=name.GetValue() 

name是其中我進入從wxPython的GUI的值textcontrol。

由於名稱架構不存在,導致出現錯誤。

什麼是檢索值的正確方法?

回答

1

我還不能肯定你正在嘗試做的,但我覺得你的問題可能是語法(INTO而不是作爲誤用):

SELECT age AS x FROM employee WHERE name = .... 
5

「name.GetValue()」是字面字符串,你發送到你的db,它對wxpython一無所知,對你的程序中的變量一無所知。您需要將該數據的值發送到您的數據庫,可能使用綁定參數。類似於:

cur.execute("select age from employee where name=%s", [name.GetValue()]) 
x = cur.fetchone()[0] # returns a row containing [age] from the db 

可能是您所追求的。這將在數​​據庫中創建一個帶有佔位符的查詢,然後將name.GetValue()的值綁定到該佔位符並執行查詢。下一行讀取查詢結果的第一行,並將x分配給該行中的第一個項目。

+0

我仍然收到一個錯誤 - (psycopg2.ProgrammingError:操作符不存在:字符變化=?) 有沒有其他方法可以解決這個問題? – Black

+1

是的,psycopg使用%s樣式參數綁定,而不是?,我編輯了我的答案以反映這一點。注意,執行行與cur.execute(「select employee from employee where name =%s」%name.GetValue())'不一樣,使用字符串插值(%運算符)會打開SQL注入。 – Steve