python 字串組成MySql 命令時,字串含有單引號或者雙引號導致出錯解決辦法

來源:互聯網
上載者:User

標籤:blank   組合   插入   span   app   xxx   view   一個   otto   

引用自:48036839

一、在組成SQL語句並發送命令時完全按照Python中的樣式去傳遞,這樣在MySql中執行的時候就會遇到錯誤的命令,由單引號或者雙引號引起。因此應該在組成字串之前,手動將字串中的單引號或者雙引號之前加上反斜線,這樣在組合成字串的時候,MySql就能夠識別了。例如:str="""select count(*) from %s where %s.AppId="%s" """%(self._TB_NAME,self._TB_NAME,appid)print strcur.execute("%s"%(str)) 如果appid是一種含有單引號或者雙引號的變數,例如 I‘m XXX and say "hi!"在這個變數中含有單引號,雙引號。這樣組成的SQL語句為:select count(* )from  table where table.AppId =" I‘m XXX and say "hi!""這樣的話,這個SQL語句明顯就會出錯。因此在組成str之前應該對appid中的單引號雙引號進行處理。使用replace方法將單引號和雙引號前面加上反斜線。appid=appid.replace("‘","\\\‘")  將單引號轉成\單引號appid=appid.replace(‘"‘,‘\\\"‘)  將雙引號轉成\雙引號這樣在組成的SQL語句就成了select count(* )from  table where table.AppId =" I\‘m XXX and say \"hi!\""這樣MySql就將字串中的單引號雙引號正確識別了。 二、python向mysql資料庫插入資料時經常會碰到一些特殊字元,如單引號,雙引號。

解決辦法:
cur.execute(u‘‘‘update table set name = %s where id = %s;‘‘‘ , (name.decode(‘utf-8‘),index))

舉例:
name="I‘mHere"
注意: cursor.execute()可以接受一個參數,也可以接受兩個參數:
(1) cur.execute("insert into resource(cid,name) values(%s, %s)" , (12,name) );
    這種格式是接受兩個參數,MySQLdb會自動替你對字串進行轉義和加引號,不必再自己進行轉義,執行完此語句之後,resource表中多了一條記錄: 12  I‘mHere
(2) cur.execute("insert into resource(cid,name) values(%s, %s)" % (12,name) );
    這種格式是利用python的字串格式化自己產生一個query,也就是傳給execute一個參數,此時必須自己對字串轉義和增加引號,即上邊的語句是錯誤的,應該修改為:
    name = MySQLdb.escape_string(name);
    cursor.execute("insert into resource(cid,name) values(%s, ‘%s‘)" % (12,name) );
    這樣插入的記錄才和(1)一樣:12 I‘mHere個人分類: Pythonmysql

python 字串組成MySql 命令時,字串含有單引號或者雙引號導致出錯解決辦法

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.