Python MySQLdb 使用utf-8 編碼插入中文數(shù)據(jù)問題
最近幫伙計做了一個從網(wǎng)頁抓取股票信息并把相應(yīng)信息存入MySQL中的程序。
使用環(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ā)銀行",在進行插入操作前做一下編碼轉(zhuǎn)換a = a.decode("gbk").encode("utf-8")
。然后進行插入操作就沒有任何問題了。
第二個問題:能插入之后無法在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() #生成連接的指針對象 #進行字符串編碼轉(zhuǎ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é)果 #進行查詢操作檢查剛剛執(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)閉連接
總結(jié)
以上所述是小編給大家介紹的Python MySQLdb 使用utf-8 編碼插入中文數(shù)據(jù)問題,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
淺談Pandas Series 和 Numpy array中的相同點
今天小編就為大家分享一篇淺談Pandas Series 和 Numpy array中的相同點,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06Python實現(xiàn)銀行賬戶資金交易管理系統(tǒng)
這篇文章主要介紹了Python銀行賬戶資金交易管理系統(tǒng),本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2020-01-01Keras設(shè)置以及獲取權(quán)重的實現(xiàn)
這篇文章主要介紹了Keras設(shè)置以及獲取權(quán)重的實現(xiàn),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06python內(nèi)置函數(shù)compile(),complex()的使用
這篇文章主要為大家詳細(xì)介紹了python內(nèi)置函數(shù)compile(),complex()的使用,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-06-06python數(shù)據(jù)批量寫入ScrolledText的優(yōu)化方法
今天小編就為大家分享一篇python數(shù)據(jù)批量寫入ScrolledText的優(yōu)化方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10pandas中DataFrame檢測重復(fù)值的實現(xiàn)
本文主要介紹了pandas DataFrame檢測重復(fù)值,主要包括了檢查整行整列的檢測,以及多列是否重復(fù),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-05-05Pygame游戲開發(fā)之太空射擊實戰(zhàn)碰撞改進篇
相信大多數(shù)8090后都玩過太空射擊游戲,在過去游戲不多的年代太空射擊自然屬于經(jīng)典好玩的一款了,今天我們來自己動手實現(xiàn)它,在編寫學(xué)習(xí)中回顧過往展望未來,在本課中,我們將討論如何更改?Pygame?處理精靈之間沖突的方式2022-08-08