Python連線MySQL中有關中文亂碼的解決問題

2021-07-09 03:06:45 字數 2688 閱讀 7078

**文章 

一、mysqldb中文亂碼問題的解決(python)

寫了乙個簡單的指令碼,將我的資料整理到mysql中去。遇到了亂碼問題,改了一下,很快就解決了。連線mysql時要注意註明是utf-8字符集,所有中文都要是utf-8,如果有gbk也要先轉換成utf-8,把握這個原則,中文亂碼問題是不會有的。

轉換指令碼如下:

#-*- coding: utf-8 -*-,

#coding = utf-8

import mysqldb,os

def wgdata2db():

print"convert weg game data to mysql"

db=mysqldb.connect(host='localhost', 

#連線資料庫

user='root',

passwd='123456',

db='testdb',

charset="utf8") 

#這裡要註明是utf8字符集,檔案開頭最好也加上utf-8的宣告

cursor=db.cursor()

ifos.path.exists('test.dat'):

rfile = open('test.dat', 'r')

lines = rfile.readlines()

rfile.close()

loop = 0

for line in lines:

print "handle line:%d" % (loop)

myset = line.split(' ')

sqlstr = "insert into wg_content (type,title,url,speed,des,size)values('%s','%s','%s','%s','%s','%s')" \

%(myset[0],myset[1],myset[2],myset[3],myset[4],myset[5])

cursor.execute(sqlstr)

loop +=1 

db.commit()

cursor.close()

db.close()

二、python中插入mysql中文亂碼的問題

mysql的預設編碼為latin1,查詢mysqldb的原始碼關鍵報錯的地方是cursor.execute,這裡要執行一下encode(charset),既然這裡要encode,那就在外面先decode一下,果然什麼都不改,在自己的呼叫函式裡做decode。

sql = 'insert into aa values('測試')'

sql = sql.decode('latin1')

cursor.execute(sql)

三、python操作mysql以及中文亂碼的問題

我用了下面幾個措施,保證mysql的輸出沒有亂麻:

1 python檔案設定編碼 utf-8 (檔案前面加上#encoding=utf-8)

2 mysql資料庫charset=utf-8

3 python連線mysql是加上引數 charset=utf8

4 設定python的預設編碼為 utf-8 (sys.setdefaultencoding(utf-8)

python操作mysql以及中文亂碼的問題 收藏

python操作mysql需要安裝python-mysql

可以從網上搜尋一下,和一般的python包一樣安裝

安裝好之後,模組名字叫做mysqldb ,在window和linux環境下都可以使用,試驗了一下挺好用,

不過又發現了煩人的亂麻問題,最後用了幾個辦法,解決了!

我用了下面幾個措施,保證mysql的輸出沒有亂麻:

1python檔案設定編碼 utf-8 (檔案前面加上 #encoding=utf-8)

2mysql資料庫charset=utf-8

3python連線mysql是加上引數 charset=utf8

4設定python的預設編碼為 utf-8 (sys.setdefaultencoding(utf-8)

mysql_test.py

#encoding=utf-8

import sys

import mysqldb

reload(sys)

sys.setdefaultencoding('utf-8')

db=mysqldb.connect(user='root',charset='utf8')

cur=db.cursor()

cur.execute('use mydb')

cur.execute('select * from mytb limit 100')

f=file("/home/user/work/tem.txt",'w')

for i in cur.fetchall():

f.write(str(i))

f.write("")

f.close()

cur.close()

上面是linux上的指令碼,windows下執行正常!

注:mysql的配置檔案設定也必須配置成utf8

設定 mysql 的 my.cnf 檔案,在[client]/[mysqld]部分都設定預設的字符集(通常在/etc/mysql/my.cnf):

[client]default-character-set =utf8[mysqld]default-character-set = utf8

Python高階 連線 Mysql

本篇文章主要用 pymysql 來實現python3 mysql資料的連線。git clone cd pymysql python3 setup.py install 安裝過程如下圖所示 開啟資料庫連線 db pymysql.connect localhost username password t...

python連線MySQL示例

python連線mysql示例一 開啟資料庫連線 connect,connect,connection import pymysql db pymysql.connect host localhost port 3306 user root passwd 123456 db stu charset ...

MySql中有哪些儲存引擎

什麼是儲存引擎呢?儲存引擎說白了就是如何儲存資料 如何為儲存的資料建立索引和如何更新 查詢資料等技術的實現方法。因為在關聯式資料庫中資料的儲存是以表的形式儲存的,所以儲存引擎也可以稱為表型別 即儲存和操作此表的型別 在oracle 和sql server等資料庫中只有一種儲存引擎,所有資料儲存管理機...