python执行mysql插入时间超长

来源:4-1 存储数据到MySQL

kent324

2016-09-05 00:17

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

http://img.mukewang.com/57cc490c0001b64412130658.jpg [Finished in 164.8s]

写回答 关注

3回答

  • 秋名山车神
    2016-09-05 09:39:12
    已采纳

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

    秋名山车神 回复kent32...

    查出原因了吗

    2016-09-07 10:52:47

    共 4 条回复 >

  • weibo_慕村3462509
    2016-09-25 21:32:40

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

    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")


  • kent324
    2016-09-05 23:58:42
    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, 一次可以插入多条记录

    kent32... 回复秋名山车神

    感觉大批量插入数据还是不写在for里面比较好, so 就它们提出来放外面

    2016-09-07 09:55:09

    共 2 条回复 >

python遇见数据采集

本教程让你初步掌握Python进行数据采集,创造属于你的价值

59669 学习 · 200 问题

查看课程

相似问题