为了账号安全,请及时绑定邮箱和手机立即绑定

在4-2 查询MySQL数据那一课上按照老师的代码出现错误!找不到解决办法!

Traceback (most recent call last):

  File "E:/Project/python/readMysql.py", line 20, in <module>

    conut = cursor.execute(sql)

  File "C:\Python35-32\lib\site-packages\pymysql\cursors.py", line 166, in execute

    result = self._query(query)

  File "C:\Python35-32\lib\site-packages\pymysql\cursors.py", line 323, in _query

    self._do_get_result()

  File "C:\Python35-32\lib\site-packages\pymysql\cursors.py", line 339, in _do_get_result

    self._show_warnings()

  File "C:\Python35-32\lib\site-packages\pymysql\cursors.py", line 347, in _show_warnings

    ws = self._get_db().show_warnings()

  File "C:\Python35-32\lib\site-packages\pymysql\connections.py", line 780, in show_warnings

    result.read()

  File "C:\Python35-32\lib\site-packages\pymysql\connections.py", line 1304, in read

    first_packet = self.connection._read_packet()

  File "C:\Python35-32\lib\site-packages\pymysql\connections.py", line 970, in _read_packet

    (packet_number, self._next_seq_id))

pymysql.err.InternalError: Packet sequence number wrong - got 139 expected 1

请问如何解决?


正在回答

5 回答

这个问题已经确定是0.7.7的一个BUG了,作者已经修复了这个漏洞,发布了0.7.9的版本,升级为0.7.9就可以了。

0 回复 有任何疑惑可以回复我~
#1

citz 提问者

非常感谢!
2016-09-05 回复 有任何疑惑可以回复我~

这个问题应该是PyMySQL的一个BUG,你输入pip uninstall pymysql然后会问你是否卸载输入y。

然后输入pip install pymysql==0.7.6 回车就可以了

安装0.7.6的版本就可以了。

通过实验我发现是因为数据中urlname这一列存在空字符(是空字符,而不是NULL),这个问题我已经在github上与pymysql的团队取得了联系,看他们后面是如何回复的。

0.7.7以上都有这个问题,如果不想使用0.7.6可以把那urlname为空的删除掉,或者对urlname做一个检查,不能为空字符。

0 回复 有任何疑惑可以回复我~
#1

citz 提问者

谢谢老师解答。
2016-09-05 回复 有任何疑惑可以回复我~
#2

flqa

你好请问这个问题现在官方有回复了吗?我使用0.7.6的版本也有此问题。
2016-12-19 回复 有任何疑惑可以回复我~
#3

flqa

另外我发现在多进程时,可能会出现这个问题,跑单个是没有问题的
2016-12-19 回复 有任何疑惑可以回复我~
#4

秋名山车神 回复 flqa

官方回复就是BUG啊,存储空字符串的时候就会出问题。存储的时候检查一下,不是空字符串的再存储就行了。
2016-12-20 回复 有任何疑惑可以回复我~
#5

flqa 回复 秋名山车神

O(∩_∩)O谢谢 这个问题不是说在0.7.9版本修复了吗。 我使用0.7.9版本也会包这个问题
2016-12-21 回复 有任何疑惑可以回复我~
查看2条回复

再用数据库管理软件,打开数据库对应的表,看一下里面的数据,截个图出来。

0 回复 有任何疑惑可以回复我~

把代码都贴出来看看

0 回复 有任何疑惑可以回复我~

代码:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pymysql.cursors

# 获取链接
connection = pymysql.connect(
   host='localhost',
   user='root',
   password='1234',
   db='wikiurl',
   charset='utf8mb4'
)

try:
   # 获取回话指针
   with connection.cursor() as cursor:
       # 查询语句
       sql = "select `urlname`, `urlhref` from `urls` where `id` is not null"
       conut = cursor.execute(sql)
       print(conut)
finally:
   connection.close()

_________________________________________________________________________________________________________________

数据库对应的表:

57c928300001d6a705000282.jpg57c9282c000128c805000431.jpg

57c9282e0001b0e405000431.jpg

57c9283400015b5205000430.jpg

57c928350001159705000442.jpg


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

在4-2 查询MySQL数据那一课上按照老师的代码出现错误!找不到解决办法!

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信