2013-02-02 25 views
1

我有一個在django中創建的webapp/webservice方法,它在DB表上存儲unicode字符文件名。我用這種方法在views.py腳本做:Unicode字符文件名SELECT SQL參數問題

SubmissionContents(id=subid, filename=fn.decode('unicode_escape')).save() 

我做這種方式,因爲我遇到了一些Unicode的文件名了表徵,這是不正常存儲在數據庫(無論是什麼原因,我仍然不知道)。這也是對這個建議stackoverflow thread/link

現在在後端,我有一個普通的python腳本,它使用MySQLdb-python模塊來查詢上述數據庫。我的查詢是這樣的:

filename = (u"%s").encode('unicode_escape') 
cursor.execute('select * from `submissioncontents` 
       where `submissioncontents`.`filename` = "%s"' 
       % filename.decode('unicode_escape')) 

的問題是有沒有回到比賽,雖然我非常肯定的DB-表填充了這樣的價值。我應該如何正確地進行查詢?

在此先感謝!

+0

你打算做一個LIKE搜索嗎? – sgeddes

+0

你能輸出要被光標執行的SQL命令嗎?我猜你可能無法做到,但是從它應該匹配的行中獲得價值,可以讓你眼睛看到編碼引起的任何明顯差異。 –

+0

等等,這裏發生了什麼:'(u「%s」)。encode('unicode_escape')'?你是否想在轉義之前用unicode的實際文件名來格式化它? –

回答

0

Check right syntax

cursor.execute("SELECT foo FROM bar WHERE baz = %s", [self.baz]) 

爲您的代碼:

cursor.execute('select * from `submissioncontents` 
       where `submissioncontents`.`filename` = %s' 
       , [ filename.decode('unicode_escape') ]) 

引用文檔: 「不要使用字符串在原始查詢格式化」