gpt4 book ai didi

mysql - 如何解决 MySQL 错误字符串值错误?

转载 作者:行者123 更新时间:2023-11-29 09:38:31 25 4
gpt4 key购买 nike

我正在尝试使用 MySQL 来存储一系列矩阵和字典。我正在使用 python 3。

为此,我使用 .dumps() 序列化矩阵,并将字典放入 np.arrays 中并序列化它们。

这就是我正在尝试的:

matriz_entry = serie.pvalue_matrix.dumps()
sinais_entry = np.array([serie.sinais]).dumps()

c.execute('INSERT INTO test_table (time, sinais, matriz) VALUES (%s,%s,%s)',
(time.time(), sinais_entry, matriz_entry))

返回此错误:`pymysql.err.InternalError:(1366,“第 1 行的列 'sinais' 的字符串值不正确:'\x80\x02cnum...'”)

这是我的 MySQL 表:

mysql> DESC test_table;
+--------+----------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+----------------+------+-----+---------+-------+
| time | varchar(100) | YES | | NULL | |
| sinais | varchar(13000) | YES | | NULL | |
| matriz | varchar(2000) | YES | | NULL | |
+--------+----------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

我实际上是 SQL 新手,我不知道序列化对象是否是一个好习惯,因为我可能会超过表的最大行长度(序列化的字典长度超过 12000 个字符)。

我也尝试过使用 TEXT 类型而不是 VARCHAR(),但这也行不通。

请索取任何相关的附加信息。

最佳答案

dumps() 方法生成的数据是二进制数据,由于您尝试以文本格式存储二进制数据,因此会出现错误。

BLOB 用于存储二进制数据,而 Text 用于存储大字符串。

BLOB 值被视为二进制字符串(字节字符串)。它们没有字符集,排序和比较基于列值中字节的数值。

TEXT 值被视为非二进制字符串(字符串)。它们具有字符集,并且根据字符集的排序规则对值进行排序和比较。

您还应该查看this回答如何在数据库中存储泡菜。

关于mysql - 如何解决 MySQL 错误字符串值错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57126962/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com