python爬虫信息技术实践之Sqlite数据存储
SQLite 是遵守 ACID 的关联式数据库管理系统,它包含在一个相对小的 C 库中。它是 D.RichardHipp 建立的公有领域项目。
不像常见的客户 - 服务器范例,SQLite 引擎不是个程序与之通信的独立进程,而是连接到程序中成为它的一个主要部分。所以主要的通信协议是在编程语言内的直接 API 调用。这在消耗总量、延迟时间和整体简单性上有积极的作用。整个数据库 (定义、表、索引和数据本身) 都在宿主主机上存储在一个单一的文件中。它的简单的设计是通过在开始一个事务的时候锁定整个数据文件而完成的。
特征
库实现了多数的 SQL-92 标准,包括事务,就是代表原子性、一致性、隔离性和持久性的(ACID),触发器和多数的复杂查询。不进行类型检查。你可以把字符串插入到整数列中。例如,某些用户发现这是使数据库更加有用的创新,特别是与无类型的脚本语言一起使用的时候。其他用户认为这是主要的缺点。
多个进程或线程可以访问同一个数据而没有问题。可以并行的满足多个读访问。只有在其他访问当前不被服务的时候才能满足写访问;否则写访问失败并带有一个错误代码 (也可以在可配置的超时过期之后自动的重试)。
提供了叫做 sqlite 的一个独立程序用来查询和管理 SQLite 数据库文件。 它也充当写使用 SQLite 库的应用的一个例子。
语言绑定
可以从 C/C++ 程序中使用这个库,还可以获得对 Tcl 和一些其他脚本语言的绑定。
在 CPAN 的 DBD::SQLite 上有一个 Perl 的 DBI/DBD 模块,它不是到 SQLite 的接口,而是包括整个 SQLite 数据库引擎在其中并不需要任何额外的软件。
还有一个 Python 模块叫做 PySQLite。
PHP 从 PHP5.0 开始包含了 SQLite,但是自 5.1 版之后开始成为一个延伸函式库。SQLite 能与 PHP4 一起工作但不包含在其中。
Rails2.0.3 将缺省的数据库配置改为了 SQLite 3
SQLite 管理客户端
SQLite 亦可以作为桌面数据库使用,以下为第三方 SQLite 的 GUI 软件。例如,
-
SQLiteMan,使用 QT 开发的一个 SQLite 客户端,支持多语言、跨平台。SQLiteMan
-
SQLite Manager, 以 火狐浏览器的扩展形式提供的 SQLite 客户端。
-
SQLite Database Browser, a graphical client to access SQLite databases
-
SqlPro SQL Client, another graphical client to work with SQLite databases
本文将介绍如何使用Python操作SQLite数据库,希望能够帮助大家提高数据处理能力。
1.SQLite3简介
SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置。SQLite3支持SQL语句,对数据库的操作简单高效。因此,SQLite3非常适用于小型项目和单机应用程序,是Python开发中常用的数据库解决方案之一,能为程序提供完整的数据库解决方案。
2.创建SQLite数据库
在IDE或文本编辑器中创建一个新的Python文件,把此文件命名为python_database.py
首先,将SQLite模块导入到我们的项目中:
import sqlite3
由于Python内置了SQLite3,不需要安装任何东西。接下来,需要创建数据库和与文件的连接。
db = sqlite3.connect('db.sqlite3')
cursor = db.cursor()
上面的代码分配了两个变量,第一个变量db调用了sqlite3.connect,它会连接到文件,这里在括号内告诉Python我们想要命名数据库。
上面的代码分配了两个变量,第一个变量db调用了sqlite3.connect,它会连接到文件,这里在括号内告诉Python我们想要命名数据库。
cursor变量设置为db.cursor(),Python使用它来读取和写入数据库文件表。
然后需要实际创建表,可以通过以下代码来完成:
cursor.execute('''
CREATE TABLE IF NOT EXISTS contacts(
id INTEGER PRIMARY KEY,
firstName TEXT,
lastName TEXT,
age TEXT,
address TEXT,
jobTitle TEXT)''')
db.commit()
解释一下上面的代码:
调用cursor.execute来在db.sqlite3数据库文件中写入一个新表。创建的表名为contacts,CREATE TABLE IF NOT EXISTS行创建表(如果它还不存在于你的Python文件目录中)。
下面几行分配表头名称给每列,还必须指定每列中将放入什么类型的数据。
下面列出了不同的数据类型:
NULL,该值是个NULL值。
INTEGER,该值是个有符号整数,根据值的大小,以1、2、3、4、6或8个字节的形式存储。
REAL,该值是个浮点值,存储为8个字节的IEEE浮点数。
TEXT,该值是个文本字符串,使用数据库编码(UTF-8、UTF-16BE或UTF-16LE)存储。
BLOB,该值是数据的二进制大对象,以原始形式存储。
有一个名为id的列,为其分配了INTEGER PRIMARY KEY值。这对数据库来说是必需的,以便为每个条目分配唯一的ID,SQLite会自动增加每个新条目,每次添加新条目时SQLite都会自动将每个条目递增1。(在创建其他表之间的关系时,也需要使用此功能)。
创建的下一组标题包括fname、lname、age、address和jobTitle,由此构建一个简单的联系人数据库,调用db.commit()将表提交到数据库文件中。
现在向新表中输入一些假数据,可以编写一些 SQL 代码,如下所示:
cursor.execute('''INSERT INTO contacts(fname, lname, age, address, jobTitle)
VALUES (?, ?, ?, ?, ?)''', ('Grant', 'Peach', '35', '1 Smith Street', 'Software Dev'))
查询数据
使用SELECT语句,从表格中检索数据。
以下是一个查询数据的示例:
查询所有学生的信息
conn.connection('数据库名)
cursor=conn.cursor()
cursor.execute("SELECT * FROM students")
students = cursor.fetchall()
for student in students:
print(student)
上述代码执行SELECT语句并将结果存储在students变量中,然后通过循环打印每个学生的信息。
更新和删除数据
更新数据,使用UPDATE语句;
删除数据,使用DELETE语句。
以下是更新和删除数据的示例:
更新学生信息
cursor.execute("UPDATE students SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()
# 删除学生信息
cursor.execute("DELETE FROM students WHERE name = ?", ('Alice',))
conn.commit()
上述代码分别将学生Alice的年龄更新为26岁,并从表格中删除了名为Alice的记录
总结
SQLite是一种轻量级的嵌入式数据库引擎,适用于各种应用程序,从小型工具到大型数据驱动应用程序。SQLite是一个强大且灵活的数据库引擎,对于许多应用程序都非常适用。
-----------------------------------
- 点赞
- 收藏
- 关注作者
评论(0)