前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python在mysql数据库中存取emoji😀

python在mysql数据库中存取emoji😀

原创
作者头像
大大刺猬
发布2022-11-25 10:51:23
3.6K0
发布2022-11-25 10:51:23
举报
文章被收录于专栏:大大刺猬大大刺猬

emoji介绍

emoji就是我们聊天的时候的特殊表情, 是特殊字符(非字符串), unicode编码起始为 1F600 , 占用4个字节, 不同的终端显示可能不同,但是都是表示的同一个对象.

比如 "草莓" 这个表情, 在浏览器上效果如下

代码语言:javascript
复制
🍓

但是在微信上效果如下

微信
微信

在mysql workbench上效果如下(作为字符)

mysql workbench
mysql workbench

emoji完整表情可以查看: https://unicode.org/emoji/charts/full-emoji-list.html

在python中使用emoji

命令行终端不支持emoji表情显示, 所以我使用的jupyter notebook

你可以直接复制其它地方的表情到你的python代码

代码语言:python
代码运行次数:0
复制
print("🍓")

但是这样显然不方便, 所以我们可以调用emoji库来使用emoji

代码语言:javascript
复制
pip install emoji #安装emoji库

查看下emoji的类型和编码

代码语言:javascript
复制
import emoji
strawberry = emoji.emojize(':strawberry:')
cat = emoji.emojize(':grinning_cat:')
print(strawberry,cat)
print(type(strawberry), type(cat))
print(strawberry.encode(), cat.encode())

发现emoji是字符串类型, 编码是4字节.

在mysql中存取emoji

通过上面发现emoji是字符串(这跟python语言有关, 实际上是字符), 占用4个字节, 所以得使用 utf8mb4 字符集(mysql低版本默认为utf8mb3)

mysql建表如下

代码语言:python
代码运行次数:0
复制
CREATE TABLE `t20221125_emoji` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `emoji_char` varchar(1) DEFAULT NULL,
  `emoji_str` varchar(20) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

emoji_char 字段存储单个emoji字符

emoji_str 字段存储含emoji的字符串

python代码如下(其它语言也同理):

代码语言:python
代码运行次数:0
复制
import pymysql,emoji
conn = pymysql.connect(
			host='192.168.101.21',
			port=3308,
			user='root',
			password='123456',
			);
cursor = conn.cursor()
sql1 = "insert into db1.t20221125_emoji(emoji_char,emoji_str) values('{strawberry}','i like {cat} 啊哈')".format(strawberry=emoji.emojize(':strawberry:'),cat=emoji.emojize(':grinning_cat:'))
sql2 = "insert into db1.t20221125_emoji(emoji_char,emoji_str) values('{cat}','i like {strawberry} 啊哈')".format(strawberry=emoji.emojize(':strawberry:'),cat=emoji.emojize(':grinning_cat:')) 
print(sql1)
print(sql2)
cursor.execute(sql1)
cursor.execute(sql2)
conn.commit()

比如我想取出emoji_char=🍓的数据行, 可以这样写sql

代码语言:sql
复制
select * from db1.t20221125_emoji where emoji_char='🍓';

但是我想找出emoji_str含有🍓的数据行使用like的时候发现并不行

代码语言:javascript
复制
select * from db1.t20221125_emoji where emoji_str like '%🍓%';
显然第一条数据是不满足要求的.
显然第一条数据是不满足要求的.

那是因为默认排序字符集的原因.这里就不再讲了.自己去探索吧😋

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • emoji介绍
  • 在python中使用emoji
  • 在mysql中存取emoji
      相关产品与服务
      云数据库 SQL Server
      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档