网页文章采集器( Python自带一个轻量级的关系型数据库SQLite )

优采云 发布时间: 2022-02-23 11:04

  网页文章采集器(

Python自带一个轻量级的关系型数据库SQLite

)

  

  1 简介

  Python 带有一个轻量级的关系数据库 SQLite。该数据库使用 SQL 语言。作为后端数据库,SQLite 可以与 Python 一起使用来构建网站,或者为 Python 网络爬虫存储数据。SQLite 还广泛应用于其他领域,例如 HTML5 和移动设备。

  Python 标准库中的 sqlite3 提供了到这个数据库的接口。

  2. Python在SQLite上运行的例子

  以下代码将创建一个简单的关系数据库来存储书店的图书类别和价格。该数据库收录两个表:category 用于记录分类,book 用于记录一本书的信息。一本书属于某个类别,所以 book 有一个外键指向类别表的主键 id。

  

  2.1 创建数据库

  首先,创建数据库,以及数据库中的表。使用connect()连接数据库后,定位指针游标即可执行SQL命令:

  import sqlite3

# test.db is a file in the working directory.

conn = sqlite3.connect("test.db")

c = conn.cursor()

# create tables

c.execute('''CREATE TABLE category

(id int primary key, sort int, name text)''')

c.execute('''CREATE TABLE book

(id int primary key,

sort int,

name text,

price real,

category int,

FOREIGN KEY (category) REFERENCES category(id))''')

# save the changes

conn.commit()

# close the connection with the database

conn.close()

  SQLite 数据库是磁盘上的一个文件,例如上面的 test.db,因此可以轻松移动或复制整个数据库。test.db 本来就不存在,所以 SQLite 会自动创建一个新文件。

  使用 execute() 命令,执行两个 SQL 命令,在数据库中创建两个表。创建完成后,保存并断开数据库连接。

  2.2 插入数据

  上面创建了数据库和表,建立了数据库的抽象结构。以下将在同一数据库中插入数据:

  import sqlite3

conn = sqlite3.connect("test.db")

c = conn.cursor()

books = [(1, 1, 'Cook Recipe', 3.12, 1),

(2, 3, 'Python Intro', 17.5, 2),

(3, 2, 'OS Intro', 13.6, 2),

]

# execute "INSERT"

c.execute("INSERT INTO category VALUES (1, 1, 'kitchen')")

# using the placeholder

c.execute("INSERT INTO category VALUES (?, ?, ?)", [(2, 2, 'computer')])

# execute multiple commands

c.executemany('INSERT INTO book VALUES (?, ?, ?, ?, ?)', books)

conn.commit()

conn.close()

  插入数据也可以使用execute()来执行一条完整的SQL语句。SQL语句中的参数,使用“?” 作为替代符号,并在后面的参数中给出具体值。此处不能使用诸如“%s”之类的 Python 格式字符串,因为这种用法容易受到 SQL 注入攻击。

  您还可以使用 executemany() 方法执行多次插入和添加多条记录。每条记录都是表中的一个元素,例如上面的 books 表中的元素。

  2.3 查询

  执行查询后,Python会返回一个looper,其中收录查询获得的多条记录。循环读取,也可以使用 sqlite3 提供的 fetchone() 和 fetchall() 方法读取记录:

  import sqlite3

conn = sqlite3.connect('test.db')

c = conn.cursor()

# retrieve one record

c.execute('SELECT name FROM category ORDER BY sort')

print(c.fetchone())

print(c.fetchone())

# retrieve all records as a list

c.execute('SELECT * FROM book WHERE book.category=1')

print(c.fetchall())

# iterate through the records

for row in c.execute('SELECT name, price FROM book ORDER BY sort'):

print(row)

  2.4 更新和删除

  您可以更新记录或删除记录:

  conn = sqlite3.connect("test.db")

c = conn.cursor()

c.execute('UPDATE book SET price=? WHERE id=?',(1000, 1))

c.execute('DELETE FROM book WHERE id=2')

conn.commit()

conn.close()

  也可以直接删除整个表:

  c.execute('DROP TABLE book')

  如果你删除 test.db,整个数据库都会被删除。

  三、总结

  sqlite3 是 SQLite 的接口。要想熟练使用SQLite数据库,就需要学习关系数据库的知识。在某些场景下,Python 网络爬虫可以使用 SQLite 将信息存储在网页 采集 上。GooSeeker 爬虫 DS 计数器将在 7.x 版本中支持 SQLite。让我们考虑一下 Python 网络爬虫是如何连接到 DS 计数器的。

  最后,小编有六年的开发经验。我做过python资料的整合,完整的python编程学习路线,学习资料和工具。想要这些素材的可以关注小编后台私信:发“01”领取,希望对你有帮助。

  

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线