MySQL、JSON、Python、Django - 完全错误
Posted
技术标签:
【中文标题】MySQL、JSON、Python、Django - 完全错误【英文标题】:MySQL, JSON, Python, Django - error totally whack 【发布时间】:2017-07-30 12:19:35 【问题描述】:我正在尝试从 python 填充 mysql 数据库中的 JSON 数据字段。我正在使用支持 JSON 数据类型和 Python 2.7 的 MySQL 5.7.17。我已将表中的 6 列定义为 JSON。成功地从 Insert 语句填充了这些字段之一。我尝试使用失败的 UPDATE 语句填充剩余的 JSON 字段:
默认错误处理程序中的文件“C:\Python27\lib\site-packages\MySQLdb\connections.py”,第 36 行 文件“C:\Python27\lib\site-packages\MySQLdb\cursors.py”,第 202 行,在执行中 引发错误类,错误值 self.errorhandler(self, exc, value) InterfaceError:(-1,'错误完全重击') 默认错误处理程序中的文件“C:\Python27\lib\site-packages\MySQLdb\connections.py”,第 36 行 引发错误类,错误值 InterfaceError: (-1, 'error完全重击')
在所有情况下,数据都在我的 python 代码中定义为字典,然后我将其转换为如下字符串:
my_dict = populate_dictionary()
my_dict_as_string = json.dumps(my_dict)
有没有其他人遇到过这种情况?更新 MySQL 时可能出现错误?在插入时我没有可用的所有数据,否则我会尝试使用所有 JSON 数据插入。我也不想在我拥有所有数据之前推迟插入。
如果我将数据存储为 LONGBLOB,则一切正常,但我的 Django 前端无法读取数据。我的 Django 数据模型将所有这六个字段定义为 models.BinaryField()
【问题讨论】:
输出生成的查询并将其提供给调试可能是个好主意?这(***.com/questions/41868744/updating-mysql-json-field)可能是相关的吗? 我看到了那个帖子,但他们使用的 mysql python 库与我不同。我正在使用 mysql-python v1.2.4b4。将更新替换为插入新测试表时,我遇到了同样的错误。也许是我的数据?我会进一步调查。谢谢。 这是一个数据问题。我的 JSON 字符串中有换行符。 【参考方案1】:只是在这里添加另一个数据点。
我用一个旧的 python 2.7 脚本遇到了这个_mysql_exceptions.InterfaceError: (-1, 'error totally whack')
错误(我知道,我知道,不要恨我,但如果没有坏,等等)。
该脚本在 5.7 的服务器上执行 LOAD DATA LOCAL INFILE
,但在服务器升级到 8.0 时该脚本中断
事实证明,5.7 的默认设置是local_infile = ON
,但在 8.0 中(相当明智地)设置为 local_infile = OFF
这可以动态更改(无需重新启动 mysqld,但记得更新 conf)和解决问题。
所以脚本活着看到另一天......
【讨论】:
【参考方案2】:我遇到了同样的问题,但我更好地解决了检查我保存的 JSON,我发现它格式不正确,并且某些部分在“python 字典”而不是真正的 JSON 中。我修复了它,将“python”部分转换为正确的 JSON 字符串。
【讨论】:
【参考方案3】:我在尝试从 Python 2.7 和 sqlalchemy 填充 MySQL 表时遇到了同样的问题,但我能够通过在要附加数据的表中创建 主键 来解决它。 尝试在您的 MySQL 表中添加另一个列 ID,然后从 Python 创建一个填充该 ID 列的唯一整数序列。最后,将您的 JSON 数据和 ID 附加到 MySQL。 就我而言,在创建主键后,我没有遇到任何其他错误完全重击
【讨论】:
谢谢。这是一个数据问题。我的 JSON 字符串中有换行符。以上是关于MySQL、JSON、Python、Django - 完全错误的主要内容,如果未能解决你的问题,请参考以下文章
Django中的原始sql到json,带有日期时间和十进制MySql列