2012-07-19 18 views
1

我覺得這是一個愚蠢的問題,但我找不到任何地方。在python/postgresql/psycopg2中安全地指定用戶輸入中的'order by'子句

我想用psycopg2其中用戶通過柱..客戶端指定的排序/順序其一個JavaScript數據發行格排序/尋呼等

正常替代做法不建立一個SQL查詢工作:(注意E'xx')

cur.mogrify('select * from table offset %s limit %s order by %s', [0,5,'sort_column']) 
>>> "select * from table offset 0 limit 5 order by E'sort_column'" 

沒有清洗/替換我自己的order by子句,推薦的方法是什麼?

我是重複的: psycopg2 E' on table, field and schema

歡呼

-i

+0

參見[我的回答](http://stackoverflow.com/a/ 13891511/131874) – 2012-12-15 10:51:13

回答

0

實體名稱(表/列等)在Python的DBAPI應變量應該是無法通過任何佔位處理運行。你必須做你自己的格式:

'select * from table offset %s limit %s order by %s' % (0,5,'sort_column') 

但是卻使用了正確的轉義/佔位功能WHERE var = %s等等

+0

好的謝謝..如果是這樣的話,那就是這樣。 – 2012-07-19 16:23:36