Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
在學習 Python3 爬蟲關系型數據庫儲存時,利用 pymysql 連接 MySQL 建表,測試用的代碼如下,第一句 SQL 用于獲取當前 MySQL 的版本信息,第二句 SQL 執行創建 spiders 數據庫的操作,如果程序代碼正確,將會輸出 MySQL 的版本信息,并且能查詢到 spiders 數據庫的存在
import pymysqldb = pymysql.connect(host='localhost', user='root', password='000000', port=3306) cursor = db.cursor() cursor.execute('SELECT VERSION()') data = cursor.fetchone() print('Database version:', data) cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8") db.close()運行程序,確實輸出了 MySQL 的版本信息:Database version: ('8.0.17',),但同時還出現了以下警告:
Warning: (3719, "'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.")result = self._query(query)先查詢一下 spiders 數據庫是否已經創建成功,使用 mysql -u root -p 命令登錄 MySQL,使用 show databases 命令可以查看到 spiders 數據庫已經存在,說明創建成功
然而程序員是講究嚴謹的,即便是已經實現了數據庫的創建,但警告信息同樣也不能放過,Warning: (3719, "'utf8' is currently an alias for the character set UTF8MB3, but will be an alias for UTF8MB4 in a future release. Please consider using UTF8MB4 in order to be unambiguous.") 大致看一下應該是編碼上的問題,百度翻譯一下該警告信息:警告:(3719,“utf8”當前是字符集utf8mb3的別名,但在將來的版本中將是utf8mb4的別名。請考慮使用utf8mb4,以便不含糊。”)
解決辦法:將代碼中的 utf8 改為 utf8mb4 后再次運行就沒有警告了!
原理分析:百度了一下,MySQL 中的 utf8 就是 utf8mb3,最大兼容三字節的 unicode 字符,MySQL 在 5.5.3 版本之后增加了 utf8mb4 的編碼,mb4 就是 most bytes 4 的意思,專門用來兼容四字節的 unicode 字符,utf8mb4 是 utf8mb3 的超集,utf8mb3 和 utf8mb4 表示的范圍如下表:
| max bit | 3 | 4 |
| 范圍 | 基本多文種平面 + US-ASCII | 輔助平面(Supplementary) + 基本多文種平面 + US-ASCII |
| unicode范圍 | U+0000 - U+FFFF | U+0000 - U+10FFFFF |
| 常見字符 | 英文字母,CJK大部分常用字等 | CJK非常用字,數學符號,emoji表情等 |
總結
以上是生活随笔為你收集整理的Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 浦发万用随借金占用额度吗
- 下一篇: 2020年银行理财哪个好?简单五步教你选