SQLite 数据库
1. 简介
SQLite 是一个轻量级的关系型数据库管理系统,它以库的形式嵌入到其他应用程序中使用。与传统的数据库管理系统不同,SQLite 完全不需要独立的服务器进程,而是直接跟随应用程序进行通信,并将数据库存储在一个文件中。
SQLite 的特点如下:
- 轻量级:SQLite 的核心库文件非常小巧,只有几百 KB,无需额外的配置和管理,非常适合嵌入到移动设备或资源受限的系统中使用。
- 无服务器:SQLite 运行在应用程序的进程空间中,无需独立的服务器进程,简化了数据库的部署和维护过程。
- 跨平台:SQLite 可以在多个平台上运行,包括 Windows、Mac OS、Linux 等。
- 支持标准的 SQL 语句:SQLite 支持标准的 SQL 语句,包括 SELECT、INSERT、UPDATE、DELETE 等,方便开发者进行数据操作。
2. SQLite 基本操作
2.1 数据库连接
在使用 SQLite 数据库之前,需要首先通过连接数据库来获取数据库对象。SQLite 数据库连接的方法如下:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
上述代码中,通过 sqlite3
模块的 connect
方法连接到名为 example.db
的数据库。如果该数据库文件不存在,则会自动创建一个新的数据库文件。
2.2 创建表
在 SQLite 中,可以使用 SQL 语句来操作数据库。下面是一个示例,创建一个名为 students
的表:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 创建表
conn.execute('''
CREATE TABLE students (
id INT PRIMARY KEY,
name TEXT,
age INT
)''')
# 提交并关闭连接
conn.commit()
conn.close()
上述代码中,使用 execute
方法执行 SQL 语句,创建了一个名为 students
的表,表中包含 id
、name
、age
三个字段。
2.3 插入数据
SQLite 中插入数据的操作使用 INSERT 语句。以下是一个示例,向 students
表中插入一条数据:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 插入数据
conn.execute("INSERT INTO students (id, name, age) VALUES (1, 'Alice', 20)")
# 提交并关闭连接
conn.commit()
conn.close()
上述代码中,使用 execute
方法执行 INSERT 语句,将一条数据插入到 students
表中。
2.4 查询数据
针对 SQLite 数据库的查询操作,可以使用 SELECT 语句。以下是一个示例,查询 students
表中的所有数据:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 查询数据
cursor = conn.execute("SELECT * FROM students")
for row in cursor:
print(f"id: {row[0]}, name: {row[1]}, age: {row[2]}")
# 关闭连接
conn.close()
上述代码中,使用 execute
方法执行 SELECT 语句,通过游标遍历查询结果并打印输出。
2.5 更新数据
SQLite 数据库的更新操作使用 UPDATE 语句。以下是一个示例,更新 students
表中的一条数据:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 更新数据
conn.execute("UPDATE students SET age = 21 WHERE id = 1")
# 提交并关闭连接
conn.commit()
conn.close()
上述代码中,使用 execute
方法执行 UPDATE 语句,将 students
表中 id 为 1 的记录的 age 字段更新为 21。
2.6 删除数据
SQLite 数据库的删除操作使用 DELETE 语句。以下是一个示例,删除 students
表中的一条数据:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 删除数据
conn.execute("DELETE FROM students WHERE id = 1")
# 提交并关闭连接
conn.commit()
conn.close()
上述代码中,使用 execute
方法执行 DELETE 语句,删除 students
表中 id 为 1 的记录。
3. SQLite 高级操作
3.1 数据库事务
SQLite 支持事务的操作,可以通过 commit
方法提交事务或 rollback
方法回滚事务。以下是一个示例,使用事务插入多条数据:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 开启事务
conn.execute("BEGIN TRANSACTION")
# 插入数据
conn.execute("INSERT INTO students (id, name, age) VALUES (2, 'Bob', 22)")
conn.execute("INSERT INTO students (id, name, age) VALUES (3, 'Charlie', 23)")
# 提交事务
conn.commit()
# 查询数据
cursor = conn.execute("SELECT * FROM students")
for row in cursor:
print(f"id: {row[0]}, name: {row[1]}, age: {row[2]}")
# 关闭连接
conn.close()
上述代码中,使用 BEGIN TRANSACTION
开启一个事务,然后插入多条数据,最后通过 commit
方法提交事务。
3.2 使用参数化查询
为了避免 SQL 注入等安全问题,并且提高查询的性能,可以使用参数化查询。以下是一个示例,使用参数化查询查询指定名称的学生信息:
import sqlite3
# 连接数据库
conn = sqlite3.connect('example.db')
# 查询数据
name = 'Bob'
cursor = conn.execute("SELECT * FROM students WHERE name = ?", (name,))
for row in cursor:
print(f"id: {row[0]}, name: {row[1]}, age: {row[2]}")
# 关闭连接
conn.close()
上述代码中,使用 ?
占位符表示参数,然后在执行 execute
方法时,通过第二个参数传入参数的值。
4. 结语
本文介绍了 SQLite 数据库的基本操作,包括数据库连接、创建表、插入数据、查询数据、更新数据和删除数据。同时,还介绍了 SQLite 的高级操作,包括数据库事务和参数化查询。SQLite 是一个简单易用的轻量级数据库,非常适合嵌入式系统和移动应用程序的开发。