操作系統: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地址