这篇文章给大家分享的是有关Python3爬虫中使用PyMySQL操作MySQL数据库的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。
在Python 2中,连接MySQL的库大多是使用MySQLdb,但是此库的官方并不支持Python 3,所以这里推荐使用的库是PyMySQL。
使用PyMySQL操作MySQL数据库的方法。
<强> 1。准备工作强>
在开始之前,请确保已经安装好了MySQL数据库并保证它能正常运行,而且需要安装好PyMySQL库。如果没有安装,可以参考第1章。
<强> 2。连接数据库强>
这里,首先尝试连接一下数据库。假设当前的MySQL运行在本地,用户名为根,密码为123456,运行端口为3306。这里利用PyMySQL先连接MySQL,然后创建一个新的数据库,名字叫作蜘蛛,代码如下:
import PyMySQL 时间=db pymysql.connect(主机=& # 39;localhost # 39;,用户=& # 39;根# 39;,,密码=& # 39;123456 & # 39;,,端口=3306) 时间=cursor db.cursor () cursor.execute (& # 39; SELECT () & # 39;版本) 时间=data cursor.fetchone () 打印(& # 39;Database 版本:& # 39;,,数据) cursor.execute (“CREATE  DATABASE spiders  DEFAULT CHARACTER SET utf8") db.close ()
运行结果如下:
Database 版本:,(& # 39;5.6.22& # 39;)
这里通过PyMySQL的connect()方法声明一个MySQL连接对象db,此时需要传入MySQL运行的主机(即IP)。由于MySQL在本地运行,所以传入的是localhost。如果MySQL在远程运行,则传入其公网IP地址。后续的参数用户即用户名,密码即密码,港口即端口(默认为3306年)。
连接成功后,需要再调用光标()方法获得MySQL的操作游标,利用游标来执行SQL语句。这里我们执行了两句SQL,直接用execute()方法执行即可。第一句SQL用于获得MySQL的当前版本,然后调用fetchone()方法获得第一条数据,也就得到了版本号。第二句SQL执行创建数据库的操作,数据库名叫作蜘蛛,默认编码为utf - 8。由于该语句不是查询语句,所以直接执行后就成功创建了数据库蜘蛛。接着,再利用这个数据库进行后续的操作。
<强> 3。创建表强>
一般来说,创建数据库的操作只需要执行一次就好了。当然,我们也可以手动创建数据库。以后,我们的操作都在蜘蛛数据库上执行。
创建数据库后,在连接时需要额外指定一个参数db。
接下来,新创建一个数据表学生,此时执行创建表的SQL语句即可。这里指定3个字段,结构如表5 - 1所示。
创建该表的示例代码如下:
import PyMySQL 时间=db pymysql.connect(主机=& # 39;localhost # 39;,,用户=& # 39;根# 39;,,密码=& # 39;123456 & # 39;,,=3306港,db=& # 39;蜘蛛# 39;) 时间=cursor db.cursor () 时间=sql & # 39; CREATE TABLE IF NOT EXISTS students (id VARCHAR (255), NOT 空,,name VARCHAR (255), NOT 空,,age INT NOT 空,, PRIMARY KEY (id) & # 39; cursor.execute (sql) db.close ()
运行之后,我们便创建了一个名为学生的数据表。
当然,为了演示,这里只指定了最简单的几个字段。实际上,在爬虫过程中,我们会根据爬取结果设计特定的字段。
<强> 4。插入数据强>
下一步就是向数据库中插入数据了。例如,这里爬取了一个学生信息,学号为20120001,名字为鲍勃,年龄为20,那么如何将该条数据插入数据库呢?示例代码如下:
import pymysql 时间=id & # 39; 20120001 & # 39; 时间=user & # 39;鲍勃# 39; age =20 时间=db pymysql.connect(主机=& # 39;localhost # 39;,,用户=& # 39;根# 39;,,密码=& # 39;123456 & # 39;,,=3306港,db=& # 39;蜘蛛# 39;) 时间=cursor db.cursor () 时间=sql & # 39; INSERT INTO 学生(id,名称,,年龄),值(% s,, % s,, % s) & # 39; 试一试: ,,,cursor.execute (sql,,(用户id,,,,年龄)) ,,,db.commit () 除了: ,,,db.rollback () db.close ()
这里首先构造了一个SQL语句,其价值值没有用字符串拼接的方式来构造,如:
sql =, & # 39; INSERT INTO 学生(id,名称,,年龄),值(& # 39;,+,id +, & # 39;,, & # 39;, +, name +, & # 39;,, & # 39;, +, age +, & # 39;) & # 39;Python3爬虫中使用PyMySQL操作MySQL数据库的方法