Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告
在學(xué)習(xí) Python3 爬蟲關(guān)系型數(shù)據(jù)庫(kù)儲(chǔ)存時(shí),利用 pymysql 連接 MySQL 建表,測(cè)試用的代碼如下,第一句 SQL 用于獲取當(dāng)前 MySQL 的版本信息,第二句 SQL 執(zhí)行創(chuàng)建 spiders 數(shù)據(jù)庫(kù)的操作,如果程序代碼正確,將會(huì)輸出 MySQL 的版本信息,并且能查詢到 spiders 數(shù)據(jù)庫(kù)的存在
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()運(yùn)行程序,確實(shí)輸出了 MySQL 的版本信息:Database version: ('8.0.17',),但同時(shí)還出現(xiàn)了以下警告:
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 數(shù)據(jù)庫(kù)是否已經(jīng)創(chuàng)建成功,使用 mysql -u root -p 命令登錄 MySQL,使用 show databases 命令可以查看到 spiders 數(shù)據(jù)庫(kù)已經(jīng)存在,說(shuō)明創(chuàng)建成功
然而程序員是講究嚴(yán)謹(jǐn)?shù)?#xff0c;即便是已經(jīng)實(shí)現(xiàn)了數(shù)據(jù)庫(kù)的創(chuàng)建,但警告信息同樣也不能放過(guò),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.") 大致看一下應(yīng)該是編碼上的問(wèn)題,百度翻譯一下該警告信息:警告:(3719,“utf8”當(dāng)前是字符集utf8mb3的別名,但在將來(lái)的版本中將是utf8mb4的別名。請(qǐng)考慮使用utf8mb4,以便不含糊?!?#xff09;
解決辦法:將代碼中的 utf8 改為 utf8mb4 后再次運(yùn)行就沒(méi)有警告了!
原理分析:百度了一下,MySQL 中的 utf8 就是 utf8mb3,最大兼容三字節(jié)的 unicode 字符,MySQL 在 5.5.3 版本之后增加了 utf8mb4 的編碼,mb4 就是 most bytes 4 的意思,專門用來(lái)兼容四字節(jié)的 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非常用字,數(shù)學(xué)符號(hào),emoji表情等 |
總結(jié)
以上是生活随笔為你收集整理的Python3 使用 pymysql 连接 MySQL 建表时出现 Warning3719 UTF8 警告的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浦发万用随借金占用额度吗
- 下一篇: 【leetcodeMySQL每周一练】-