为了账号安全,请及时绑定邮箱和手机立即绑定

python执行mysql插入时间超长

和你的代码一样,为什么我执行mysql插入时花费的时间

http://img1.sycdn.imooc.com/57cc490c0001b64412130658.jpg [Finished in 164.8s]

正在回答

3 回答

你把插入数据库的代码注释掉,然后只是打印名字和网址,看看需要多久。

0 回复 有任何疑惑可以回复我~
#1

kent324 提问者

注释掉插入数据库的代码后,速度非常快,基本上秒出结果.
2016-09-05 回复 有任何疑惑可以回复我~
#2

秋名山车神 回复 kent324 提问者

还有这种情况,你把插入到表里面的数据,导出成SQL语句,然后在MySQL的管理工具里面执行那些命令,看看需要多久。
2016-09-06 回复 有任何疑惑可以回复我~
#3

kent324 提问者 回复 秋名山车神

这个我也试过,速度非常快. 感谢回复哈 :)
2016-09-07 回复 有任何疑惑可以回复我~
#4

秋名山车神 回复 kent324 提问者

查出原因了吗
2016-09-07 回复 有任何疑惑可以回复我~
查看1条回复

代码一样,这个是数据库配置不对吗

pymysql.err.ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '~urls~(~urlname~, ~urlhref~)values('Wikipedia', 'https://en.wikipedia.org/wiki/W' at line 1")


0 回复 有任何疑惑可以回复我~
values = [] 
# 输出所有的词条对应的名称和URL属性
for url in listUrls:
	#过滤.jpg或.JPG结尾的URL
	if not re.search("\.(jpg|JPG)$",url["href"]):	
		#输出URL的文字和对应的链接
		print(url.get_text(),"<----->","https://en.wikipedia.org"+url["href"])		
		values.append((url.get_text(),"https://en.wikipedia.org"+url["href"]))
try:
	connection = pymysql.connect(host="localhost",user="root",password="root",db="wikiurl",charset="utf8mb4")
	with connection.cursor() as cursor:
		sql = "insert into `urls`(`urlname`,`urlhref`)values(%s,%s)"

		cursor.executemany(sql,values)
		connection.commit()		
except:
	info = sys.exc_info()
	print(info)
	print(info[0])
	print(info[1])
finally:
	connection.close()

上面代码我换了思路,把mysql操作放在最后来做,同时调用cursor.executemany, 一次可以插入多条记录

0 回复 有任何疑惑可以回复我~
#1

秋名山车神

能够用自己的思路去优化,非常好。
2016-09-06 回复 有任何疑惑可以回复我~
#2

kent324 提问者 回复 秋名山车神

感觉大批量插入数据还是不写在for里面比较好, so 就它们提出来放外面
2016-09-07 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

python执行mysql插入时间超长

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信