SQLite极简入门 / ai #63

DeepAgent等Agent都采用了SQLite作为本地数据库来用,看来,是要对SQLite补补课啰。

sqlite.jpg
SQLite(来源:网络)

下载与资源

官网
菜鸟教程

简介

SQLite 是一个零配置、无服务器、单文件存储的轻量级关系型数据库引擎。它不需要安装独立的服务进程,整个数据库就是一个磁盘文件(.db 或 .sqlite),非常适合嵌入式应用、本地数据存储、原型开发和中小型项目。

特点

特性说明
零配置无需安装、启动服务或修改配置文件
单文件整个数据库(表、索引、数据)存于一个文件中
跨平台支持 Windows、macOS、Linux、Android、iOS 等
嵌入式直接嵌入到应用程序中(如 Python 内置支持)
事务安全支持 ACID,通过 WAL 模式提升并发性能
轻量库文件仅几百 KB,资源占用极低

简单运用

Python 标准库自带 sqlite3 模块,无需额外安装。

  1. 创建数据库
import sqlite3

# 连接数据库(不存在则自动创建)
conn = sqlite3.connect('demo.db')
cursor = conn.cursor()

# 创建用户表
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        email TEXT UNIQUE
    )
''')
conn.commit()
  1. 插入数据
# 单条插入
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)",
               ("张三", 25, "[email protected]"))

# 批量插入
users = [
    ("李四", 30, "[email protected]"),
    ("王五", 22, "[email protected]"),
]
cursor.executemany("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", users)
conn.commit()
  1. 查询数据
cursor.execute("SELECT * FROM users WHERE age > ?", (20,))
rows = cursor.fetchall()

for row in rows:
    print(row)  # (1, '张三', 25, '[email protected]')
  1. 关闭连接
cursor.close()
conn.close()

案例 :本地待办事项管理

import sqlite3
from datetime import datetime

conn = sqlite3.connect('todo.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS todos (
    id INTEGER PRIMARY KEY,
    task TEXT,
    created_at TEXT,
    done INTEGER DEFAULT 0
)''')

# 添加任务
c.execute("INSERT INTO todos (task, created_at) VALUES (?, ?)",
          ("学习 SQLite", datetime.now().isoformat()))
conn.commit()

# 查看未完成任务
c.execute("SELECT * FROM todos WHERE done = 0")
print(c.fetchall())
conn.close()