mysqldb 插入四个字节的表情符号
以前解决这个问题,具体怎么解决的忘记了,这次有遇到同样的问题了,bing了好一段时间,这次记录下来以防止再次忘记
爬虫抓取的数据有四个字节,还是表情符号
使用的技术是 python2.7 mysql8.0 mysqldb
1. 创建数据表
1 2 3 4 5 6 7 | CREATE TABLE `tests` ( `url_id` int NOT NULL AUTO_INCREMENT, `a1` varchar( 520 ) DEFAULT NULL, `hashcode` varchar( 520 ) DEFAULT NULL, PRIMARY KEY (`url_id`), UNIQUE KEY `hashcode` (`hashcode`) USING BTREE ) ENGINE = InnoDB AUTO_INCREMENT = 2 DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci; |
2. 修改数据表
这一步很重要
alter table tests convert to character set utf8mb4 collate utf8mb4_0900_ai_ci;
或者
ALTER TABLE mytable MODIFY COLUMN myfiled varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
3. 插入数据
def insert_data(dbName, data_dict): print "dbname",dbName """ # 插入数据到数据库中 # 新增功能是程序报 2003错误,插入数据停止5秒后重新执行插入操作 :param dbName: 数据表的名称 :param data_dict: 需要插入的一条数据,格式是字典格式。例如 {"author":"张三","pubTime":"2018-05-06"} :return: 插入成功返回1,失败返回0 """ data_values = "(" + "%s," * (len(data_dict)) + ")" data_values = data_values.replace(',)', ')') dbField = data_dict.keys() dbField2 = dbField dataTuple = tuple(data_dict.values()) dbField = str(tuple(dbField)).replace("'", '')
MysqlDataBase = {
'db': 'spider_2019',
'USER': 'root',
'PASSWORD': 'root',
'HOST': "1.0.1.2",
'PORT': 33006,
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | def insert_data(dbName, data_dict): print "dbname" ,dbName """ # 插入数据到数据库中 # 新增功能是程序报 2003错误,插入数据停止5秒后重新执行插入操作 :param dbName: 数据表的名称 :param data_dict: 需要插入的一条数据,格式是字典格式。例如 {"author":"张三","pubTime":"2018-05-06"} :return: 插入成功返回1,失败返回0 """ data_values = "(" + "%s," * ( len (data_dict)) + ")" data_values = data_values.replace( ',)' , ')' ) dbField = data_dict.keys() dbField2 = dbField dataTuple = tuple (data_dict.values()) dbField = str ( tuple (dbField)).replace( "'" , '') try : conn = MySQLdb.connect(host = MysqlDataBase[ 'HOST' ], user = MysqlDataBase[ 'USER' ], passwd = MysqlDataBase[ 'PASSWORD' ],db = MysqlDataBase[ 'db' ], charset = "utf8" ,port = MysqlDataBase[ 'PORT' ]) cursor = conn.cursor() sql = """ insert into %s %s values %s """ % (dbName, dbField, data_values) params = dataTuple cursor.execute(sql, params) conn.commit() cursor.close() conn.close() print "正在往 " + str (dbName) + " 数据单个插入数据, 插入成功" return "1" except Exception as e: print "正在往 " + str (dbName) + " 插入数据, 插入失败 请查找原因,失败原因是:" , e a1 = '🍊挑战高薪等你来战🍊5险3金/房产销售/网络营销j' |
如果觉得对您有帮助,麻烦您点一下推荐,谢谢!
好记忆不如烂笔头
好记忆不如烂笔头
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
2018-03-29 爬虫过程中的 数据插入 问题及其解决方案
2018-03-29 Python 爬虫实例(13) 下载 m3u8 格式视频
2018-03-29 MySQL 两个数据库表中合并数据
2018-03-29 HTTP 请求头 详解
2018-03-29 爬虫的本质是什么?