mysql python中文資料錯誤

2021-08-10 08:10:55 字數 1193 閱讀 3319

使用中文常常有因為編碼引起的程式錯誤,或者中文亂碼的問題,這裡一次解決.

像下邊這樣的錯誤:

1366 incorrect string value: '\xe8\x82\x96\xe5\xb1\xb1...' for column 'sub_station_name'

首先,對於遠端呼叫mysql命令的方式,有兩個地方的編碼要注意,

1. 乙個是資料庫中的資料項要設定成utf8,

2.另乙個是在建立mysql連線時,要設定charset="utf8"的這個引數.

只要這兩個地方都設定對了,那麼mysql資料庫環境就沒有問題了,有問題就是我們傳送給mysql的命令中的中文的編碼有可能不是utf8,

1366主要是因為中文編碼引起的,雖然資料庫裡的資料表和資料項我都設定為utf8了,但遠端插入資料時還是會出這個錯誤,原因是因為傳送給mysql的命令中有中文,而且這個中文不是utf8編碼.

知道了原因,那接下來就是要先看文字是什麼編碼,然後再把這個中文轉成utf8.真對python的中文轉碼有下邊方法:

首先,使用chardet的python庫判斷中文是什麼編碼.

import 

chardet

f = open('cntext.txt','r')

tmpstr = f.read()

f.close()

cnstrtype = chardet.detect(

tmpstr

)print cnstrtype

這個時候,我們可以看到輸出是:

這是乙個dict資料.第乙個引數是測出的編碼可能性,後乙個是測出的編碼名

知道了中文編碼後,接下來就是要把這個中文轉成utf8編碼的.可以使用下邊的方法

utf8str = tmpstr.decode(cntype).encode('utf-8')

newtype = chardet.detect(utf8str)

print newtype

這裡先使用了decode()對原來的"gb2312"解碼成unicode編碼,然後再使用encode()對unicode編碼為'utf-8'.這裡可以看到列印的輸出為:

然後在mysql的命令中使用這個utf8編碼後的字串就可以了.

python上安裝mysql的訪問庫,請看之前的文章:

mysql python安裝問題

python訪問mysql的模組,以前叫mysqldb,後來更名為mysql python,安裝似乎也有變化。有時會遇到這樣的問題 sudo python setup.py installsh line 1 mysql config command not found traceback most ...

Mysql Python與資料庫的使用

感覺這裡不全,或者沒找到吧 在確保自己安裝mysql服務並啟動的情況下就可以在python的互動式介面測試是否安裝成功了 測試 如下 import mysqldb 匯入mysql python模組 db mysqldb.connect user root 以管理員身份連線資料庫 cursor db....

mysql python模組安裝問題

我在的環境是ubuntu14.04 在用sudo pip install mysql python 一下是報錯資訊 downloading unpacking mysql python downloading mysql python 1.2.5.zip 108kb 108kb downloaded...