溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Python中MySQLdb使用utf-8編碼插入中文數(shù)據(jù)出問題怎么辦

發(fā)布時間:2021-06-18 10:03:58 來源:億速云 閱讀:268 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下Python中MySQLdb使用utf-8編碼插入中文數(shù)據(jù)出問題怎么辦,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

使用環(huán)境:

Python 2.5 for Windows
MySQLdb 1.2.2 for Python 2.5
MySQL 4.1.22

在寫程序中遇到了些怪的故障。

第一個問題:插入中文失敗

 這個是由于字符編碼問題引起的。MySQL安裝時我已經(jīng)設(shè)置為utf8編碼,表也是使用utf8編碼建立。程序中只要在開頭寫好#-*- coding: utf-8 -*-,并在設(shè)定連接字符串時候?qū)懬迨褂胾tf8就可以了conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")。設(shè)置之后從MySQL中取出的以utf8編碼保存的中文也不會發(fā)生亂碼。

對中文字符串,如:a = "浦發(fā)銀行",在進(jìn)行插入操作前做一下編碼轉(zhuǎn)換a = a.decode("gbk").encode("utf-8")。然后進(jìn)行插入操作就沒有任何問題了。

第二個問題:能插入之后無法在MySQL中保存剛才插入的數(shù)據(jù)

經(jīng)過檢查數(shù)據(jù)可以被正確的插入,但是連接斷開之后不保存在表中。經(jīng)過檢查發(fā)現(xiàn)原來是漏了conn.commit()。需要在語句執(zhí)行之后提交操作。

源代碼如下。

#-*- coding: utf-8 -*-
import sys,MySQLdb
conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8") #需要設(shè)定一下charset為utf-8
cursor=conn.cursor() #生成連接的指針對象
#進(jìn)行字符串編碼轉(zhuǎn)換并進(jìn)行插入
a = "浦發(fā)銀行"
a = a.decode("gbk").encode("utf-8") #編碼轉(zhuǎn)換為utf-8
sql="insert into stocklist (stockno,stockname) values (%s,%s)" #生成sql語句
param=('600000',a) #生成sql語句的參數(shù)
n = cursor.execute(sql,param) #執(zhí)行sql語句
#以上操作等價于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦發(fā)銀行".decode("gbk").encode("utf-8") + "')")
print n
conn.commit() #提交操作結(jié)果
#進(jìn)行查詢操作檢查剛剛執(zhí)行的插入操作結(jié)果
n = cursor.execute("select * from stocklist")
for row in cursor.fetchall():
 print row[0] + row[1]
cursor.close() #關(guān)閉指針
conn.close() #關(guān)閉連接

以上是“Python中MySQLdb使用utf-8編碼插入中文數(shù)據(jù)出問題怎么辦”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識,歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI