最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python調(diào)用MySQLdb插入中文亂碼的解決

 更新時(shí)間:2022年03月25日 10:15:56   作者:鐘文佳  
這篇文章主要介紹了Python調(diào)用MySQLdb插入中文亂碼的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MySQLdb插入中文亂碼

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import MySQLdb
def main():
    fullname = "趙錢(qián)孫李"
 
    conn = MySQLdb.connect(host='localhost', user='root',passwd='123', db='account', charset='utf8')  # OK
    #conn = MySQLdb.connect(host='localhost', user='root',passwd='123', db='account')  # Error!!!
    cursor = conn.cursor()
    cursor.execute("insert into account (username,password) values ('%s','%s')" % (fullname, "111"))
    conn.commit()
    cursor.close()
    conn.close()
 
if __name__ == "__main__":
    main()

如果從終端查詢(xún)到數(shù)據(jù)庫(kù)中的中文是亂碼,那么在連接時(shí)給出charset參數(shù)即可(當(dāng)然數(shù)據(jù)庫(kù)和表必須全部都是utf-8的)。

否則默認(rèn)插入的字符應(yīng)該是latin-1的(用fullname.decode('utf8')時(shí)報(bào)該錯(cuò)誤)。

然后將從數(shù)據(jù)庫(kù)中讀取的中文輸出到網(wǎng)頁(yè),如果沒(méi)有任何內(nèi)容顯示,加入以下代碼可解決:

import sys
reload(sys)
sys.setdefaultencoding('utf-8')

Python內(nèi)部處理編碼默認(rèn)是ascii的:

print sys.getdefaultencoding()

MySQLdb使用utf-8 編碼插入中文數(shù)據(jù)

這幾天忙著幫人做一個(gè)從網(wǎng)頁(yè)抓取股票信息并把相應(yīng)信息存入MySQL中的程序。

使用環(huán)境

  • Python 2.5 for Windows
  • MySQLdb 1.2.2 for Python 2.5
  • MySQL 4.1.22

在寫(xiě)程序中遇到了些怪的故障。

第一個(gè)問(wèn)題:插入中文失敗

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

設(shè)置之后從MySQL中取出的以u(píng)tf8編碼保存的中文也不會(huì)發(fā)生亂碼。 

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

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

經(jīng)過(guò)檢查數(shù)據(jù)可以被正確的插入,但是連接斷開(kāi)之后不保存在表中。經(jīng)過(guò)檢查發(fā)現(xiàn)原來(lái)是漏了conn.commit()。需要在語(yǔ)句執(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() ? ? # 生成連接的指針對(duì)象
?# 進(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語(yǔ)句
?param = ( ' 600000 ' ,a) ? ? # 生成sql語(yǔ)句的參數(shù)
?n ?= ?cursor.execute(sql,param) ? ? # 執(zhí)行sql語(yǔ)句
# 以上操作等價(jià)于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦發(fā)銀行".decode("gbk").encode("utf-8") + "')")
?print ?n
conn.commit() ?# 提交操作結(jié)果
?# 進(jìn)行查詢(xú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)閉連接

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖

    python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖

    python是一個(gè)很有趣的語(yǔ)言,可以在命令行窗口運(yùn)行,下面這篇文章主要給大家介紹了關(guān)于python中如何利用matplotlib畫(huà)多個(gè)并列的柱狀圖的相關(guān)資料,需要的朋友可以參考下
    2022-01-01
  • 詳解Scrapy Redis入門(mén)實(shí)戰(zhàn)

    詳解Scrapy Redis入門(mén)實(shí)戰(zhàn)

    這篇文章主要介紹了詳解Scrapy Redis入門(mén)實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • PYTHON 中使用 GLOBAL引發(fā)的一系列問(wèn)題

    PYTHON 中使用 GLOBAL引發(fā)的一系列問(wèn)題

    這篇文章主要介紹了PYTHON 中使用 GLOBAL引發(fā)的一系列問(wèn)題的相關(guān)資料,需要的朋友可以參考下
    2016-10-10
  • Pycharm中配置Anaconda解釋器的完整步驟

    Pycharm中配置Anaconda解釋器的完整步驟

    Anaconda是Python的一個(gè)發(fā)行版本,集成了大量插件,在用PyCharm進(jìn)行開(kāi)發(fā)時(shí),可以選用Anaconda執(zhí)行環(huán)境,下面這篇文章主要給大家介紹了關(guān)于Pycharm中配置Anaconda解釋器的完整步驟,需要的朋友可以參考下
    2022-11-11
  • Python 壓縮打包文件/文件夾的方法

    Python 壓縮打包文件/文件夾的方法

    本文主要介紹了Python?壓縮打包文件/文件夾的方法,分兩種類(lèi)型處理,打包文件是需要傳入文件的路徑,打包文件夾是傳入文件夾的路徑,感興趣的可以了解一下
    2023-12-12
  • Python + opencv對(duì)拍照得到的圖片進(jìn)行背景去除的實(shí)現(xiàn)方法

    Python + opencv對(duì)拍照得到的圖片進(jìn)行背景去除的實(shí)現(xiàn)方法

    這篇文章主要介紹了Python + opencv對(duì)拍照得到的圖片進(jìn)行背景去除的實(shí)現(xiàn)方法,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-11-11
  • 總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)

    總結(jié)python多進(jìn)程multiprocessing的相關(guān)知識(shí)

    今天給大家?guī)?lái)的是關(guān)于Python的相關(guān)知識(shí),文章圍繞著python multiprocessing多進(jìn)程的相關(guān)知識(shí)展開(kāi),文中有非常詳細(xì)的介紹及代碼示例,需要的朋友可以參考下
    2021-06-06
  • python pytest進(jìn)階之conftest.py詳解

    python pytest進(jìn)階之conftest.py詳解

    這篇文章主要介紹了python pytest進(jìn)階之conftest.py詳解,如果我們?cè)诰帉?xiě)測(cè)試用的時(shí)候,每一個(gè)測(cè)試文件里面的用例都需要先登錄后才能完成后面的操作,那么們?cè)撊绾螌?shí)現(xiàn)呢?這就需要我們掌握conftest.py文件的使用了,需要的朋友可以參考下
    2019-06-06
  • PyCharm配置KBEngine快速處理代碼提示沖突、配置命令問(wèn)題

    PyCharm配置KBEngine快速處理代碼提示沖突、配置命令問(wèn)題

    這篇文章主要介紹了PyCharm配置KBEngine,解決代碼提示沖突、配置命令,本文通過(guò)圖文并茂的形式給大家介紹的超詳細(xì),需要的朋友可以參考下
    2021-04-04
  • python實(shí)現(xiàn)簡(jiǎn)單的超市商品銷(xiāo)售管理系統(tǒng)

    python實(shí)現(xiàn)簡(jiǎn)單的超市商品銷(xiāo)售管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)超市商品銷(xiāo)售管理系統(tǒng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-11-11

最新評(píng)論

张家港市| 白朗县| 中牟县| 孝昌县| 谢通门县| 商都县| 高碑店市| 张家口市| 宁武县| 同心县| 锡林浩特市| 汤原县| 商都县| 临泽县| 玉门市| 历史| 孝义市| 错那县| 封丘县| 咸阳市| 类乌齐县| 成武县| 沭阳县| 察雅县| 贵溪市| 桃园市| 大冶市| 周宁县| 宣威市| 苏尼特右旗| 宁津县| 和龙市| 大方县| 积石山| 奉化市| 双桥区| 塔城市| 南岸区| 墨脱县| 应用必备| 日照市|