大家好,我是陈哥。爬虫采集的数据除了可以存储在文本文件和excel中,还可以存储在数据集中,比如:Mysql、redis、mongodb等。今天陈哥教大家如何使用Python连接Mysql,结合爬虫给大家讲解。前提:这里大家默认安装了mysql。01Mysql简介Mysql是一种关系型数据库,支持大型数据库,可以处理千万条记录的大型数据库。将爬虫收集的数据集存入mysql后,借助mysql的关联查询,一步就可以检索到相关数据。具体作用这里不再赘述,下面开始实际操作。1、安装pymysql使用如下命令安装pipinstallpymysqlpymysql库:Python3linkmysql备注:ps:MYSQLdbisonlyapplicabletopython2.xpython3doesnotsupportMYSQLdb,pymysqlreport:ImportError:Nomodulenamed'MYSQLdb'2。pythonConnectmysqlimportpymysqlaspmq#connect(ip.user,password,dbname)con=pmq.connect('localhost','root','123456','python_chenge')#operationcursorcur=con.cursor()localhost为本地ip,这里用localhost表示当前本机,否则把localhost改成对应的数据库ip。root是数据库用户名,123456是数据库密码,python_chenge是数据库名。图中的数据库python_chenge已经建好(建好之后可以用上面的代码连接),建好之后目前还没有表,现在开始用Python建表,插入,查询,修改、删除等操作(结合爬虫讲解)02在存储之前通过python创建表。有四个字段(一个主键+电影名,链接,评分)#createmovie_sql='''createtablemovie(idintAUTO_INCREMENTprimarykeynotnull,titlevarchar(100)CHARACTERSETutf8COLLATEutf8_general_cinotnull,urlvarchar(100)CHARACTERSETutf8COLLATEutf8_general_cinotnull,ratefloatnotnull)'''#Executesql语句cur.execute(movie_sql)#提交到数据库执行con.commit()创建表movie,字段为(id,title,url,rate),CHARACTERSETutf8COLLATEutf8_general_ci是字符串编码设置为utf8格式id是主键,int类型,AUTO_INCREMENT自增,非空notnulltitle,url是string类型varchar(100),同样非空评分率是带小数的数字,所以是float,也是非空的03插入数据爬虫采集了数据,python建了一张表,然后可以将采集到的数据插入到数据库中。这里有两种方式###Insertdatadefinsert(title,url,rate):#insertdataone#cur.execute("INSERTINTOmovie(title,url,rate)VALUES('"+str(title)+"','"+str(url)+"',"+str(rate)+")")#插入数据2sql="INSERTINTOmovie(title,url,rate)VALUES('"+str(title)+"','"+str(url)+"',"+str(rate)+")"cur.execute(sql)#提交到数据库执行。con.commit()id是自增的,所以不需要在传入值后进入数据库,定义好插入数据库的方法,然后开始在数据库中执行storeforiinjson_data['subjects']:insert(i['title'],i['url'],i['rate'])04查询1.查询所有查询表中的所有数据#Querycur.execute('select*frommovie')results=cur.fetchall()forrowinresults:id=row[0]title=row[1]print("id=%s,title=%s"%(Id,title))2.查询指定的例如查询数据的title是:唐人街3中这条数据的所有字段#查询单项cur.execute('select*frommovieheretitle="唐人街探案3"')results=cur.fetchall()forrowinresults:Id=row[0]title=row[1]url=row[2]rate=row[3]print("id=%s,title=%s,url=%s,rate=%s"%(Id,title,url,rate))05更新修改更新数据,还是以上面:唐人街3为例,id为7,将唐人街3的分数从5.5改成6###updatedefupdate():sql="updatemoviesetrate='6'whereId={0}".format(7)cur.execute(sql)con.commit()另外看一下数据库06删除还是以唐人街为例,它的id是7,如果删除了,我们可以更新id删除defdelete(Id):sql="deletefrommoviewhereId={0}".format(Id)cur.execute(sql)con.commit()删除后,不会有第7条数据,说明删除是成功的。07小结今天的技术讲解文章到此结束,主要是如何通过python连接mysql,以及建表、插入数据、查询、更新、修改、删除。本文转载自微信公众号“Python研究员”,可通过以下二维码关注。转载本文请联系Python研究人员公众号。
