欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

MySQLdb插入中文亂碼

#!/usr/bin/python
# -*- coding: utf-8 -*-
 
import MySQLdb
def main():
    fullname = "趙錢孫李"
 
    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()

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

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

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

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

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

print sys.getdefaultencoding()

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ā)銀行",在進(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)閉連接

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

相關(guān)文章

  • Python簡單調(diào)用MySQL存儲過程并獲得返回值的方法

    Python簡單調(diào)用MySQL存儲過程并獲得返回值的方法

    這篇文章主要介紹了Python調(diào)用MySQL存儲過程并獲得返回值的方法,涉及Python操作MySQL存儲過程的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • python調(diào)用golang中函數(shù)方法

    python調(diào)用golang中函數(shù)方法

    由于simhash方法有多種實現(xiàn)方式,現(xiàn)python中simhash方法與golang中的不一樣,需要兩者代碼生成結(jié)果保持一致,故采用python中的代碼調(diào)用golang編譯的so文件來實現(xiàn),需要的朋友可以參考下
    2024-02-02
  • python編寫小程序探測linux端口占用情況

    python編寫小程序探測linux端口占用情況

    這篇文章主要介紹了python編寫小程序探測linux端口占用情況,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2021-12-12
  • Python中re模塊:匹配開頭/結(jié)尾(^/$)

    Python中re模塊:匹配開頭/結(jié)尾(^/$)

    本文主要介紹了Python中re模塊:匹配開頭/結(jié)尾(^/$),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • python encode和decode的妙用

    python encode和decode的妙用

    做網(wǎng)絡(luò)編程的時候,經(jīng)常需要把接收到的數(shù)據(jù)用16進(jìn)制的方式打印出來,方便查看。今天發(fā)現(xiàn)在Python下有這樣一個簡單的方法。
    2009-09-09
  • python單元測試unittest實例詳解

    python單元測試unittest實例詳解

    這篇文章主要介紹了python單元測試unittest用法,以實例形式詳細(xì)分析了Python中單元測試的概念、用法與相關(guān)使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-05-05
  • Python函數(shù)之zip函數(shù)的介紹與實際應(yīng)用

    Python函數(shù)之zip函數(shù)的介紹與實際應(yīng)用

    zip() 函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應(yīng)的元素打包成一個個元組,然后返回由這些元組組成的對象(python2 返回的是這些元組組成的列表 ),下面這篇文章主要給大家介紹了關(guān)于Python函數(shù)之zip函數(shù)實際應(yīng)用的相關(guān)資料,需要的朋友可以參考下
    2022-03-03
  • 詳解Python?Flask?API?示例演示(附cookies和session)

    詳解Python?Flask?API?示例演示(附cookies和session)

    這篇文章主要為大家介紹了Python?Flask?API?示例演示(附cookies和session)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • python基礎(chǔ)之匿名函數(shù)介紹

    python基礎(chǔ)之匿名函數(shù)介紹

    大家好,本篇文章主要講的是python基礎(chǔ)之匿名函數(shù)介紹,感興趣的同學(xué)趕快來看一看,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • python提取word文件中的圖片并上傳阿里云OSS

    python提取word文件中的圖片并上傳阿里云OSS

    這篇文章主要介紹了通過Python提取Word文件中的所有圖片,并將其上傳至阿里云OSS。文中的示例代碼對學(xué)習(xí)Python有一定的幫助,快跟隨小編一起學(xué)習(xí)一下吧
    2021-12-12

最新評論