学习《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'