在学习 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 表示的范围如下表:

说明 mysql utf8 / utf8mb3 mysql 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 警告相关推荐

  1. mysql建表时错误1075_navicat出现错误1075怎么办

    MYSQL中AUTO_INCREMENT会在新记录插入表中时生成一个唯一的数字.希望在每次插入新记录时,自动地创建主键字段的值,可以在表中创建一个 auto-increment 字段. mysql创建 ...

  2. mysql建表时主键_mysql建表时设置主键的方法

    mysql建表时设置主键的方法 发布时间:2020-10-10 15:17:28 来源:亿速云 阅读:119 作者:小新 mysql建表时设置主键的方法?这个问题可能是我们日常学习或工作经常见到的.希 ...

  3. mysql 建表时建立索引_mysql 分享建表和索引的几点规范

    一. MySQL建表,字段需设置为非空,需设置字段默认值. 二. MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL. 三. MySQL建表,如果字段等价于外键,应在该字段加索引. ...

  4. mysql 建表时创建唯一索引

    Mysql建表与索引使用规范整理 一,设计表规范: MySQL建表,字段需设置为非空,需设置字段默认值: MySQL建表,字段需NULL时,需设置字段默认值,默认值不为NULL: MySQL建表,如果 ...

  5. mysql建表时外检怎么创建_MySQL创建表时加入的约束以及外键约束的的意义

    1,创建表时加入的约束 a) 非空约束,not null b) 唯一约束,unique c) 主键约束,primary key d) 外键约束,foreign key 1,非空约束,针对某个字段设置其 ...

  6. MySQL建表时Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP

    问题描述:在利用MySQL语句建立表结构时出现了Error Code : 1293 Incorrect table definition; there can be only one TIMESTAM ...

  7. mysql建表时主键_mysql建表时怎么设置主键?

    设置方法:在"CREATE TABLE"语句中,通过"PRIMARY KEY"关键字来指定主键,语法格式"字段名 数据类型 PRIMARY KEY [ ...

  8. mysql建表时插入中文_Mysql新建表,插入中文时报错“Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column”问题...

    有时候我们在往数据库中输入信息时,如果输入的内容是中文,会报错"Incorrect string value: '\xE4\xBD\xA0\xE5\xA5\xBD' for column&q ...

  9. MYSQL建表时数据类型的选择

    1.为表中的字段选择合适的数据类型 当一个列可以选择多种数据类型时,应该优先考虑数字类型,其次是日期或二进制类型,最后是字符类型. 对于相同级别的数据类型,应该优先选择占用空间小的数据类型. 2.如何 ...

最新文章

  1. 16岁开宝马,19岁创立自己的电脑公司,戴尔传奇
  2. 中心线超出轮廓线多少_激光切割的这些基础知识,你知道多少?
  3. Hystrix Health Indicator及Metrics Stream
  4. 如何给UI上可以接收focus事件的element动态注册onfocus处理函数
  5. jQuery的三种bind/One/Live/On事件绑定使用方法
  6. warning:This application is modifying the autolayout engine from a background thread
  7. 如何使用Caddy部署Vue项目
  8. wince -- 线程中SetEvent及WaitForSingleObject用法
  9. 【一年总结】记我的大二生活
  10. java中token什么意思_java中Token验证用法 什么是Token
  11. 开源的书签服务Cherry
  12. Android Studio 解决数据库手机电脑不同步
  13. 【虚拟机Linux系统】如何将系统语言由英文改成中文?
  14. C语言程序设计(第3版) 何钦铭 颜晖 主编
  15. LeetCode第258场周赛
  16. 对一级标题二级标题进行排序
  17. 概念整理ia32/x86/amd64/ia64/arm64
  18. 免费域名和空间搭建个人网站——服务器篇
  19. 关于旋转矩阵R,平移向量t和变换矩阵T的关系
  20. 老男孩2020mysql笔记

热门文章

  1. ★★★常用的【兼容IE和火狐FF】等浏览器的js方法★★★★★★★★
  2. 人这辈子没法做太多的事情
  3. UEditor1.2.6.0在.net环境下使用
  4. Asp.net 定时任务
  5. 统计一行文本的单词个数_word操作技巧:不同情况的文字统计方法
  6. 1612D. X-Magic Pair
  7. jetty java 禁用目录列表_java – 如何禁用Jetty的WebAppContext目录列表?
  8. mysql 预留一个自定义字段_MySQL 按指定字段自定义列表排序 | DevOps
  9. linux内核编译后 make: 警告:检测到时钟错误.,系统时钟 make: 警告:检测到时钟错误。您的创建可能是不完整的。...
  10. unique_ptr使用简介