Pymysql可以';t connect do MySQL数据库:挂起在;将自己的袜子收进(b)“;?

Pymysql可以';t connect do MySQL数据库:挂起在;将自己的袜子收进(b)“;?,mysql,python-3.x,visual-studio-code,pymysql,macos-catalina,Mysql,Python 3.x,Visual Studio Code,Pymysql,Macos Catalina,目前在macOS 10.15上使用python 3.7,安装了MySQL 8.0.19。使用虚拟环境设置在VScode中开发。我还在phpmyadmin中创建了一个本地数据库。我想尽可能连接到它。脚本: import pymysql print("Before") connection = pymysql.connect(host='localhost', user='myUserName', password='myPassword', db='db_name', charset='

目前在macOS 10.15上使用python 3.7,安装了MySQL 8.0.19。使用虚拟环境设置在VScode中开发。我还在phpmyadmin中创建了一个本地数据库。我想尽可能连接到它。脚本:

import pymysql

print("Before")
connection = pymysql.connect(host='localhost',
    user='myUserName', password='myPassword', db='db_name', charset='utf8mb4', 
          cursorclass=pymysql.cursors.DictCursor)
print("After")
当我运行脚本时,执行将无限期挂起。打印“之后”,我必须退出执行。Trackback是:

Traceback (most recent call last):
File "connect.py", line 5, in <module>
  user='myUserName', password='myPassword', db='db_name', charset='utf8mb4', 
  cursorclass=pymysql.cursors.DictCursor)
File "/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site- 
  packages/pymysql/__init__.py", line 94, in Connect
  return Connection(*args, **kwargs)
File "/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site- 
  packages/pymysql/connections.py", line 325, in __init__
  self.connect()
File "/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site- 
  packages/pymysql/connections.py", line 598, in connect
  self._get_server_information()
File "/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site- 
  packages/pymysql/connections.py", line 975, in _get_server_information
  packet = self._read_packet()
File "/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site- 
packages/pymysql/connections.py", line 657, in _read_packet
  packet_header = self._read_bytes(4)
File "/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site- 
  packages/pymysql/connections.py", line 691, in _read_bytes
  data = self._rfile.read(num_bytes)
File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/
python3.7/socket.py", line 589, in readinto
  return self._sock.recv_into(b)
KeyboardInterrupt
回溯(最近一次呼叫最后一次):
文件“connect.py”,第5行,在
user='myUserName',password='myPassword',db='db_name',charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
文件“/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site-
packages/pymysql/_init__.py”,第94行,在Connect中
返回连接(*args,**kwargs)
文件“/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site-
packages/pymysql/connections.py”,第325行,在__
self.connect()
文件“/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site-
packages/pymysql/connections.py”,第598行,在connect中
self.\u获取\u服务器\u信息()
文件“/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site-
packages/pymysql/connections.py”,第975行,在获取服务器信息中
数据包=自身。\u读取\u数据包()
文件“/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site-
packages/pymysql/connections.py”,第657行,在读包中
数据包头=self.\u读取字节(4)
文件“/Users/name/Documents/Work/Connection Test/env/lib/python3.7/site-
packages/pymysql/connections.py”,第691行,以字节为单位
data=self.\u rfile.read(num\u字节)
文件“/usr/local/ceral/python/3.7.6_1/Frameworks/python.framework/Versions/3.7/lib/
python3.7/socket.py”,第589行,读入
返回自我。将袜子重新放入(b)
键盘中断

不知道为什么会这样。这里发生了什么?我已经搜索了大量关于堆栈溢出的问题,但没有一个对我有帮助

通过在pymysql connect函数中添加“unix_socket”参数,问题得以解决。请参见此处的答案:

这个脚本起作用了

import pymysql

print("Before")
conn = pymysql.connect(db='w_dev', user='root', passwd='celebrate', 
unix_socket="/tmp/mysql.sock")
print("After")