Python讀取mysql資料庫資料出現中文亂碼

2021-08-15 06:42:05 字數 2234 閱讀 9048

python連線mysql資料庫時,讀取資料庫中的中文出現亂碼,所有中文都顯示為問號了,我解決問題的步驟如下:

開發環境

- python版本:python3.6

- mysql版本:mysql-5.5.56-winx64

- pymysql 版本:pymysql (0.7.11)

執行pip install pymysql 完成pymysql安裝

資料庫部分

-- 建表語句

create

table books (

name varchar(50) default

null

) engine=innodb default charset=utf8;

-- 插入資料

insert

into books values('萬物生光輝');

insert

into books values('我親愛的甜橙樹');

insert

into books values('教父');

insert

into books values('故事');

insert

into books values('樹上的男爵');

insert

into books values('羅馬人的故事2');

insert

into books values('秘島(全三冊)');

python**

#!/usr/bin/env python

import pymysql.cursors

connection = pymysql.connect(user='使用者名稱', passwd='密碼', db='資料庫名')

cursor = connection.cursor()

ex = cursor.execute("select name from books")

books = cursor.fetchmany(ex)

for book in books:

print("%s" % book[0])

connection.close()

執行結果

解決亂碼方法如下:

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

mysql資料庫charset=utf-8

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

讀取資料後寫入檔案前執行編碼book[0].encode(『utf-8』)

最後測試的時候發現只需在連線mysql的時候加上charset=』utf8』即可,以utf-8編碼格式讀取資料,其他條件無需新增,也不會出現從mysql中讀取的資料出現中文亂碼的情況。其他方法加上也沒有問題,為了

修改後python**

#!/usr/bin/env python

import pymysql.cursors

# 在連線mysql的時候新增charset='utf8'即可解決中文亂碼問題

connection = pymysql.connect(user='使用者名稱', passwd='密碼', db='資料庫名', charset='utf8')

cursor = connection.cursor()

ex = cursor.execute("select name from books")

books = cursor.fetchmany(ex)

for book in books:

print("%s" % book[0])

connection.close()

修改後的執行結果

希望以上的筆記能幫到各位碼友,如有出錯請告知,謝謝各位碼友。~///(^v^)\\~

python 讀取mysql資料

import pymysql import pandas as pd defload data from mysql conn pymysql.connect host 127.0.0.1 port 3306 user test password test db database charset u...

python 連線mysql插入讀取資料

import mysqldb 連線資料庫 conn mysqldb.connect host 192.358.12.34 port 3306,user root passwd adminkcsd db sbd charset utf8 讀取資料 cur conn.cursor a cur.execu...

Python 在 MySQL 中讀取 寫入資料

import pandas as pd from sqlalchemy import create engine import pymysql 準備乙個示例資料 df ts.get hist data 000875 讀取資料,格式為dataframe 建立乙個engine engine create...