nsj*_*ani 9 python-3.x pymysql
我在Python中使用pymysql连接到数据库.它工作正常,但现在我得到了以下error:
Traceback(最近一次调用最后一次):
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/__init__.py", line 94, in Connect
return Connection(*args, **kwargs)
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/connections.py", line 327, in __init__
self.connect()
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/connections.py", line 598, in connect
self._request_authentication()
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/connections.py", line 865, in _request_authentication
data = _auth.scramble_old_password(self.password, self.salt) + b'\0'
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/_auth.py", line 72, in scramble_old_password
hash_pass = _hash_password_323(password)
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/_auth.py", line 97, in _hash_password_323
for c in [byte2int(x) for x in password if x not in (' ', '\t', 32, 9)]:
File "/Users/njethani/Desktop/venv/lib/python3.6/site-packages/pymysql/_auth.py", line 97, in <listcomp>
for c in [byte2int(x) for x in password if x not in (' ', '\t', 32, 9)]:
NameError: name 'byte2int' is not defined
Run Code Online (Sandbox Code Playgroud)
我使用以下行连接到我的数据库(连接字符串):
conn = pymysql.Connect(host='hostname', port=3306, user='username', passwd='password', db='mysql')
Run Code Online (Sandbox Code Playgroud)
由于 pymysql 维护者拒绝发布修复程序,解决方案只是安装旧版本的软件包:
pip3 install --user 'pymysql<0.9'
Run Code Online (Sandbox Code Playgroud)
小智 1
我遇到了同样的错误,看起来 _auth.py 无法找到 byte2int 的引用。我添加了以下行来修改 _auth.py 以使其正常工作。
从 util 导入 byte2int,int2byte
请注意 util.py 是 pymysql 的,因为其他包中也会有 util.py 文件。
| 归档时间: |
|
| 查看次数: |
915 次 |
| 最近记录: |