在4-2 查詢MySQL數(shù)據(jù)那一課上按照老師的代碼出現(xiàn)錯誤!找不到解決辦法!
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
請問如何解決?
2016-09-04
這個問題已經(jīng)確定是0.7.7的一個BUG了,作者已經(jīng)修復(fù)了這個漏洞,發(fā)布了0.7.9的版本,升級為0.7.9就可以了。
2016-09-03
這個問題應(yīng)該是PyMySQL的一個BUG,你輸入pip uninstall pymysql然后會問你是否卸載輸入y。
然后輸入pip install pymysql==0.7.6 回車就可以了
安裝0.7.6的版本就可以了。
通過實(shí)驗(yàn)我發(fā)現(xiàn)是因?yàn)閿?shù)據(jù)中urlname這一列存在空字符(是空字符,而不是NULL),這個問題我已經(jīng)在github上與pymysql的團(tuán)隊取得了聯(lián)系,看他們后面是如何回復(fù)的。
0.7.7以上都有這個問題,如果不想使用0.7.6可以把那urlname為空的刪除掉,或者對urlname做一個檢查,不能為空字符。
2016-09-02
再用數(shù)據(jù)庫管理軟件,打開數(shù)據(jù)庫對應(yīng)的表,看一下里面的數(shù)據(jù),截個圖出來。
2016-09-02
把代碼都貼出來看看
2016-09-02
代碼:
#!/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()
_________________________________________________________________________________________________________________
數(shù)據(jù)庫對應(yīng)的表: