您好,登錄后才能下訂單哦!
小編給大家分享一下Python中MySQLdb使用utf-8編碼插入中文數據出問題怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
使用環境:
Python 2.5 for Windows
MySQLdb 1.2.2 for Python 2.5
MySQL 4.1.22
在寫程序中遇到了些怪的故障。
第一個問題:插入中文失敗
這個是由于字符編碼問題引起的。MySQL安裝時我已經設置為utf8編碼,表也是使用utf8編碼建立。程序中只要在開頭寫好#-*- coding: utf-8 -*-,并在設定連接字符串時候寫清使用utf8就可以了conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")。
設置之后從MySQL中取出的以utf8編碼保存的中文也不會發生亂碼。
對中文字符串,如:a = "浦發銀行",在進行插入操作前做一下編碼轉換a = a.decode("gbk").encode("utf-8")
。然后進行插入操作就沒有任何問題了。
第二個問題:能插入之后無法在MySQL中保存剛才插入的數據
經過檢查數據可以被正確的插入,但是連接斷開之后不保存在表中。經過檢查發現原來是漏了conn.commit()。需要在語句執行之后提交操作。
源代碼如下。
#-*- coding: utf-8 -*- import sys,MySQLdb conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8") #需要設定一下charset為utf-8 cursor=conn.cursor() #生成連接的指針對象 #進行字符串編碼轉換并進行插入 a = "浦發銀行" a = a.decode("gbk").encode("utf-8") #編碼轉換為utf-8 sql="insert into stocklist (stockno,stockname) values (%s,%s)" #生成sql語句 param=('600000',a) #生成sql語句的參數 n = cursor.execute(sql,param) #執行sql語句 #以上操作等價于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦發銀行".decode("gbk").encode("utf-8") + "')") print n conn.commit() #提交操作結果 #進行查詢操作檢查剛剛執行的插入操作結果 n = cursor.execute("select * from stocklist") for row in cursor.fetchall(): print row[0] + row[1] cursor.close() #關閉指針 conn.close() #關閉連接
以上是“Python中MySQLdb使用utf-8編碼插入中文數據出問題怎么辦”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。