《Python网络数据采集》第五章 与Pyton整合 代码运行出错

学习《Python网络数据采集》一书, 跟着书走到第五章,尝试用Python去操作MySQL数据库,照着书上的代码运行结果出错了。

代码:

import pymysql
conn = pymysql.connect(host='127.0.0.1', unix_socket='/tmp/mysql.sock',
                       user='root', passwd=******, db='mysql', charset='utf8')
cur = conn.cursor()
cur.execute("USE scraping")
cur.execute("SELECT * FROM pages WHERE id=1")
print(cur.fetchone())
cur.close()
conn.close()

错误:

Traceback (most recent call last):
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/connections.py", line 905, in connect
    sock.connect(self.unix_socket)
FileNotFoundError: [Errno 2] No such file or directory

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/lu/PycharmProjects/untitled/4-mysqlBasicExample.py", line 3, in <module>
    user='root', passwd=110120, db='mysql', charset='utf8')
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/connections.py", line 706, in __init__
    self.connect()
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/connections.py", line 963, in connect
    raise exc
pymysql.err.OperationalError: (2003, "Can't connect to MySQL server on '127.0.0.1' ([Errno 2] No such file or directory)")

字面理解好像分别是找不到文件和无法连接到端口,尝试过网上搜索一下方法,如:更改host、更改my.cnf 的设置。但是都是失败了。

有了解的指导一下!

尝试去掉unix_socket,新的报错:

Traceback (most recent call last):
  File "/home/lu/PycharmProjects/untitled/4-mysqlBasicExample.py", line 3, in <module>
    user='root', passwd=110120, db='mysql', charset='utf8')
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/__init__.py", line 90, in Connect
    return Connection(*args, **kwargs)
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/connections.py", line 706, in __init__
    self.connect()
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/connections.py", line 932, in connect
    self._request_authentication()
  File "/home/lu/PycharmProjects/untitled/venv/lib/python3.5/site-packages/pymysql/connections.py", line 1131, in _request_authentication
    authresp = _scramble(self.password.encode('latin1'), self.salt)
AttributeError: 'int' object has no attribute 'encode'
阅读 3.7k
3 个回答
conn = pymysql.connect(host='127.0.0.1', user='root', passwd=******, db='mysql', charset='utf8')

另外在命令行输入mysql -uroot -p密码看看mysql是不是正常运行着

第一个错误:

  1. 不是linux操作系统
  2. mysql配置里修改了socket文件位置

第二个错误,密码的变量类型不对

1.没有开启sock链接或者文件位置错误,可以使用ip访问; 2.passwd给str类型 不要int类型
问题的提示都这么明显

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题