python - mysql 编码以允许表情符号
问题描述
在我的pipeline.py
self.conn = pymysql.connect(host='localhost', user='usr154', password=PASSWORD, db='db_v1',
charset='utf8mb4', cursorclass=pymysql.cursors.DictCursor)
self.cursor = self.conn.cursor()
# Table exists with all column types to "text"
my_id="a13cg"
title='hello world'
my_string = 'Top 10 Ist es ein Cityhotel? Ist es ein Schloss? Ist es ein Inselresort? '
self.cursor.execute("""insert into results values (%s,%s,%s)""",(my_id,title,my_string))
Traceback (most recent call last):
File "/home/timmy/.local/lib/python3.8/site-packages/twisted/internet/defer.py", line 654, in _runCallbacks
current.result = callback(current.result, *args, **kw)
File "/home/timmy/.local/lib/python3.8/site-packages/scrapy/utils/defer.py", line 154, in f
return deferred_from_coro(coro_f(*coro_args, **coro_kwargs))
File "/home/timmy/t_roman/t_roman/pipelines.py", line 44, in process_item
self.cursor.execute("""insert into results values (%s,%s,%s)""",
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 170, in execute
result = self._query(query)
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/cursors.py", line 328, in _query
conn.query(q)
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/connections.py", line 517, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/connections.py", line 732, in _read_query_result
result.read()
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/connections.py", line 1075, in read
first_packet = self.connection._read_packet()
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/connections.py", line 684, in _read_packet
packet.check_error()
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/protocol.py", line 220, in check_error
err.raise_mysql_exception(self._data)
File "/home/timmy/.local/lib/python3.8/site-packages/pymysql/err.py", line 109, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.InternalError: (1366, "Incorrect string value: '\\xF0\\x9F\\x94\\x8D' for column 'htmlSnippet' at row 1")
我尝试对值进行编码,但效果不佳
my_string = my_string.encode()
您好,我有以下管道填充了(最终)在烧瓶应用程序中使用的 MySQL,如何正确存储这些值,以便稍后显示它们。
解决方案
你不需要转换为字节(我假设这是scrapy MySQL管道),因为表已经创建,你可以像这样使用它。
self.cursor.execute("""ALTER TABLE results CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_bin""")
您还可以将列类型从更改text
为NVARCHAR(255)
推荐阅读
- c# - 带有 C#、WhatsApp 和 Azure 功能的 Daily Dog 未运行
- python - 在 Xn = Yn + 1 上加入数据框
- oracle - 使用 CMD 获取 Oracle 版本
- javascript - 使用 React Hooks 更新 React 中的状态
- android - Android Camera2 会话创建逻辑
- python - Discord.py 将 message.content 保存到 JSON
- r - 无法使用 cron 安排 R 脚本
- javascript - 全局变量的值不会改变
- python - 我在 python 中编写了一个代码来创建一个带有卷号、名称和标记的二进制文件。在输入卷号时,它应该更新标记
- java - 了解应用程序上下文