SQLite是一款自包含的、无服务器的、零配置的SQL数据库引擎,它不需要像MySQL、PostgreSQL那样单独部署数据库服务,直接通过代码调用对应的库就能完成数据的读写操作,整个数据库的所有内容都存储在一个普通的磁盘文件中。

SQLite的核心特点
1. 轻量无服务
SQLite的整个库编译后体积非常小,通常只有几百KB,不需要启动额外的服务进程,应用程序直接加载库文件就能使用,非常适合资源受限的环境。
2. 单文件存储
所有的表、索引、触发器等数据都存放在一个单一的文件中,备份和迁移只需要复制这个文件即可,不需要做复杂的导出导入操作。
3. 支持完整事务
SQLite遵循ACID原则,支持事务的提交、回滚操作,能够保证数据操作的原子性和一致性,避免数据出现损坏的情况。
4. 跨平台兼容
SQLite可以在Windows、Linux、macOS、Android、iOS等几乎所有主流操作系统上运行,数据文件在不同平台之间可以直接通用。
SQLite的适用场景
- 移动应用本地存储:比如安卓和iOS的很多App都会用SQLite存储用户的本地配置、缓存数据、离线数据等。
- 小型桌面软件:不需要联网的单机软件,比如本地笔记工具、小型进销存软件,用SQLite作为数据存储非常方便。
- 嵌入式设备:智能硬件、物联网设备等资源有限的场景,SQLite的低资源占用特性非常适配。
- 测试与演示环境:开发过程中做本地测试,或者给客户演示产品功能时,用SQLite可以快速搭建临时的数据存储环境,不需要配置复杂的数据库服务。
SQLite基础使用示例
下面以Python语言为例,展示SQLite的基本增删改查操作:
import sqlite3
# 连接数据库,如果文件不存在会自动创建
conn = sqlite3.connect('test.db')
# 创建游标对象
cursor = conn.cursor()
# 创建用户表
cursor.execute('''
CREATE TABLE IF NOT EXISTS user (
id INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
age INTEGER
)
''')
# 插入数据
cursor.execute("INSERT INTO user (name, age) VALUES ('张三', 25)")
cursor.execute("INSERT INTO user (name, age) VALUES ('李四', 30)")
# 提交事务
conn.commit()
# 查询数据
cursor.execute("SELECT * FROM user")
result = cursor.fetchall()
for row in result:
print(f"id:{row[0]}, 姓名:{row[1]}, 年龄:{row[2]}")
# 更新数据
cursor.execute("UPDATE user SET age = 26 WHERE name = '张三'")
conn.commit()
# 删除数据
cursor.execute("DELETE FROM user WHERE name = '李四'")
conn.commit()
# 关闭连接
cursor.close()
conn.close()
SQLite使用注意事项
虽然SQLite有很多优势,但它并不适合所有场景。如果是高并发的Web应用,或者需要多进程同时写入大量数据的场景,SQLite的性能会不如专业的服务器型数据库。另外SQLite的写操作是库级锁,同一时间只能有一个写操作执行,所以在写入频率非常高的场景下需要谨慎选择。
在使用SQLite时,如果需要存储包含特殊字符的内容,要注意对字符进行转义,避免SQL注入问题,尽量使用参数化查询而不是字符串拼接的方式构造SQL语句。