2012-03-20 86 views
1

我與蟒蛇plugins.I工作使用列表如下存儲一些值:Python的列表中查詢

known_stn.append('1') 
known_stn.append('2') 

我的查詢是

query=("SELECT survey, station FROM stat WHERE stat.station IN (%s) AND station.survey = '2011410'" %known_stn) 

發生了WHERE station.station IN (['1', '2'])錯誤,如清單包含[]括號。 我試圖更換那些括號,但他們並沒有取代。

是否有任何其他數據結構使用?或者出路來代替方括號...

+1

「Python插件」並不意味着任何afaik。你用什麼來與SQL接口? – katrielalex 2012-03-20 13:04:03

+0

我使用postgresSQL作爲GUI的database.and pyqt4設計器..... – poonam 2012-03-20 13:05:57

+1

請勿自己格式化您的查詢字符串;這是要求SQL注入攻擊。在你用來執行查詢的任何內容中使用內置的格式。 (下面的答案是正確的,因爲您需要首先將該列表加入字符串中) – katrielalex 2012-03-20 13:10:41

回答

2

您需要格式化您的列表,你用它替換到模板之前字符串串:

"where (%s) blah" % ', '.join(map(str,known_stn)) 

http://docs.python.org/library/stdtypes.html#str.join

map(str,known_stn)轉換元件thems小精靈在加入之前加入一串。

另外,請注意有關SQL注入的警告。

4

您需要將列表轉換到一個字符串:

>>> my_list = [1,2,3] 
>>> str(my_list) 
'[1, 2, 3]' 
>>> map(str, my_list) 
['1', '2', '3'] 
>>> ','.join(map(str, my_list)) 
'1,2,3' 
>>> 'select ... where foo in (%s)' % ','.join(map(str, my_list)) 
'select ... where foo in (1,2,3)'