ad

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_3.5 使用数据库

网友投稿 130 2023-11-13

【摘要】 本书摘自《Python网络爬虫 从入门到精通》一书中第3章,第5节,吕云翔、张扬和韩延刚等编著。

3.5 使用数据库

在 Python 中使用数据库(主要是关系型数据库)是一件非常方便的事情,因为一般都 能找到对应的经过包装的 API 库,这些库的存在极大地提高了开发者编写程序的效率。 一般而言,只需编写 SQL 语句并通过相应的模块执行就可以完成数据库读写了。

3.5.1 使用 MySQL

学习《Python网络爬虫 从入门到精通》_掌握爬虫的精髓_3.5 使用数据库

一般而言,在 Python 中进行数据库操作需要通过特定的程序模块 (API) 来实现。其基 本逻辑是,首先导入接口模块,然后通过设置数据库名、用户、密码等信息来连接数据库, 接着执行数据库操作(可以通过直接执行 SQL 语句等方式),最后关闭与数据库的连接。由 于 MySQL 是比较简单且常用的轻量型数据库,这里就先使用 pymysql 模块来介绍在 Python 中如何使用MySQL。

【提示】 pymysql 是 在 Python 3.x 版 本 中 用 于 连 接 MySQL 服务器的 一 个库,在 Python 2.x 版本中使用的是 mysqldb 。pymysql 是基于 Python 开发的 MySQL 驱动接口,在 Python 3.x 中非常常用,

首先确保在本地计算机上已经成功开启了 MySQL 服务(还未安装 MySQL 的话需要先 进行安装,可在 htps://dev.mysql.com/downloads/installer/ 下载 MySQL 官方安装程序),之后 使用 “pip install pymysql” 来安装 pymysql 模块。上面的准备完成后,创建一个名为 “DB”

的数据库和一个名为“scraper1”的用户,密码设为“password”:

CREATE DATABASE DB;

GRANT ALL PRIVILEGES ON *.'DB'TO'scraper1'@'localhost'IDENTIFIED BY 'password';

接着,创建一个名为 “users” 的表:

USE DB:

CREATE TABLE'users`(

`id int(11)NOT NULL AUTO_INCREMENT,

`email'varchar(255)COLLATE utf8_bin NOT NULL,

`password'varchar(255)COLLATE utf8_bin NOT NULL,

PRIMARY KEY(`id`)

)ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin

AUTO INCREMENT=1

现在有了一个空表,接着使用pymysql 进行操作,见例3-2。

【例3 -2】 使用 pymysql。

import pymysql.cursors

#Connect to the database

connection =pymysql.connect(host='localhost',

user='scraper1',

password='password',

db='DB',

charset='utf8mb4',

cursorclass=pymysql.cursors.DictCursor)

try:

with connection.cursor()as cursor:

Sql="INSERT INTO `users`(`email`,`password`)VALUES(%s,%s)" cursor.execute(sql,('example@example.org','password'))

connection.commit()

with connection.cursor()as cursor:

sql="SELECT id`,`password`FROM `users`WHERE`email`=%s"

cursor.execute(sql,('example@example.org',))

result =cursor.fetchone()

print(result)

connection.close()

在这段代码中,首先通过 pymysql.connect()函数进行了连接配置并打开了数据库连接,

在 try 代码块中打开了当前连接的cursor) (游标),并通过cursor 执行了特定的 SQL 插入语 句。commit()方法将提交当前的操作,之后再次通过 cursor 实现对刚才插入数据的查询。最 后在 finally 语句块中关闭了当前数据库连接。

本程序的输出为:{id:1,password:password'}。

考虑到在执行 SQL 语句时可能发生错误,可以将程序写成下面的形式:

try:

except:

connection.rollback()

rollback) 方法将回滚操作。

3.5.2 使用 SQLite3

SQLite3 是一种小巧易用的轻量型关系型数据库系统,在 Python 中内置的 sqlite3 模块可 以用于与 SQLite3 数据库进行交互。先使用 PyCharm 创建一个名为 “new-sqlite3” 的 SQLite3 数据源然后使用 sqlite3 (此处的 “sqlite3” 指的是 Python 中的模块)进行建表操作,与上面对 MySQL 的操作类似:

import sqlite3

conn =sqlite3.connect('new-sqlite3')

print("Opened database successfully")

cur =conn.cursor()

cur.execute(

'''CREATE TABLE Users

(ID INT PRIMARY KEY

NOT NULL,

NAME TEXT

NOT NULL,

AGE INT

NOT NULL,

GENDER TEXT

SALARY REAL);'

)

print("Table created successfully")

conn.commit()

conn.close()

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:打开《OpenStack 云平台-部署与高可用实战》_离成功更进一步_1.2.5 创建云主机
下一篇:打开《OpenStack 云平台-部署与高可用实战》_2.1 OpenStack架构
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×