python到mysql.png
小白肯定会遇到一个问题
将爬去数据导入数据库时,此时会报错误类型1064,说你在什么位置语法不对,无论你前面怎么改,运行都是这样。其实这时最大的可能性就是sql语句出了问题。原因是执行sql语句时,从目标网页中获取了大量信息,这其中不免就包含了一些特殊字符比如单引号,尖括号等,在mysql语法中有特殊含义,而执行包含这些特殊字符的sql语句,就会引发报错。
检查技巧:
可以把这时的sql语句打印出来,复制到sqlpro的query中运行,就会显示是否是sql 语句出错了。
解决方法:
(前面记得下载pymysql,之后source下配置文件,然后在终端输入python,最后输入import pymysql,没有动静就是成功了)使用pymysql.escape_string(),其可将sql语句中的多种特殊字符转义为普通字符导入。参考https://www.jianshu.com/p/b295d3bf502d
#我的答案
sql = """insert into `pro`(`姓名`,`邮件地址`,`研究方向`,`职称`) values ('%s','%s','%s','%s')"""
data = (pymysql.escape_string(info['姓']), pymysql.escape_string(info['邮']), pymysql.escape_string(info['研']), pymysql.escape_string(info['职']))
cursor = db.cursor()
cursor.execute(sql % data)
db.commit()
sqlpro的登陆mysql的问题:
Connection failed!
Unable to connect to host 127.0.0.1, or the request timed out.
Be sure that the address is correct and that you have the necessary privileges, or try increasing the connection timeout (currently 10 seconds).
解决方案:
因为你在安装时,一路默认到底,其中就选择了强密码加密登陆。我试了试只有终端能登陆,sqlpro登陆失败。所以需要重新换一个登陆方式,即‘Use legacy password‘,填上你设置的密码。参考https://my.oschina.net/gwlCode/blog/2993992