我有一個查詢字符串,它運行在循環的一側,列表查詢中的每個項目都被執行。該列表包含字符串,我使用python字符串格式技術將迭代過程中的查詢替換爲列表中相應的字符串。Python:從MySQL中退出單引號查詢
我曾與從列表中字符串沿着unicoded查詢:這裏是我的unicoded查詢:
query = ur'''SELECT something FROM some_table WHERE some_name LIKE "{this_name}%"'''
執行我編碼查詢字符串來utf-8
try:
formatted_query = query.format(this_name=list_name)
#encode the query
encoded_q = formatted_query.encode('utf-8')
# execute the query
self.dbCursor.execute(encoded_q)
row = self.dbCursor.fetchone()
except Exception, e:
traceback.print_exc()
但問題之前有時我會遇到單引號示例的列表中的字符串:foo's
。我已經使用utf-8進行了unicoded,我認爲這樣做不必擔心這種情況。但是我得到了sql錯誤,因爲MySQL沒有跳過單引號。
我的下一個嘗試是代替單引號:
format_string = u"foo's".replace(u"'",u"\'")
但是,這也不能工作。我還看到this question的答案正在使用mysqldb庫,這是我不知道的內置函數,所以我尋求來自stackoverflow社區的幫助來解決這個問題。
我更改代碼,以反映在回答提出的解決方案,但結果是一樣的:這裏是改變:
錯誤:
args = [u"{this_name}%".format(this_name=format_name)]
self.dbCursor.execute(query.encode('utf-8'), args)
#ERROR在這行拋出:
UnicodeEncodeError: 'latin-1' codec can't encode character u'\u014d' in position 4: ordinal not in range(256)
這是字符串,錯誤抱怨,我檢查了該字符串的類型是一個單字符串。
this_name= Sentōkisei type= <type 'unicode'>
如果您刪除原始標誌,會發生什麼情況? – 2013-04-27 15:25:10
真的不明白你的意思 – 2013-04-27 15:31:23