pymysql 數據庫字符報錯以及外網連接權限問題

操作系統:Ubuntu

第一個問題:pymysql數據庫字符報錯

用python 做網絡爬蟲  需要保存數據到數據庫的時候 如果包含中文的話就會報錯 UnicodeEncodeError: 'latin-1' codec can't encode characters   

查看 pymysql 源碼文件connections.py 時發現

第105行代碼: DEFAULT_CHARSET = 'latin1'  

組件默認是latin1編碼,而latin1對漢字的支持不太友好;

在529行: 對 Connection類進行初始化的,默認了charset=' ';

在668行 :對charset 進行判斷  若charset爲true取charset值,若爲false則取  DEFAULT_CHARSET值;

所以 在529行進行初始化的時候  將charset值改爲‘utf8’


第二個問題:外網數據庫連接權限

連接工具:navicat for mysql;

在user表裏面 已經添加root賬戶host爲%好之後還是連接失敗 

解決方法:在/etc/mysql/my.cnf文件中 將bind-address=127.0.0.1改爲0.0.0.0

這裏綁定了本地ip,改爲0.0.0.0 後 所有ip都可以訪問

注意:

若user表中沒有%的host 賬戶的話 還是不能訪問的,若想要外網訪問的話缺一不可,當然這裏不一定非得%或者0.0.0.0,也可以指定ip地址


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章