TypechoJoeTheme

至尊技术网

统计
登录
用户名
密码

Python操作SQLite全指南:轻量级数据库实战教程

2025-07-08
/
0 评论
/
7 阅读
/
正在检测是否收录...
07/08


SQLite作为全球部署量最大的嵌入式数据库,以其零配置、单文件存储的特性成为Python开发中的理想选择。本文将带你深入掌握用Python操作SQLite的完整技能栈。

一、SQLite基础认知

SQLite不同于传统客户端-服务器结构的数据库,它直接将数据库存储在单个磁盘文件中。Python从2.5版本开始就将sqlite3模块纳入标准库,无需额外安装。

典型应用场景包括:
- 移动端应用数据存储
- 桌面程序的本地数据管理
- 中小型网站的数据库层
- 数据分析的中间结果存储

python
import sqlite3

内存数据库(临时使用)

conn = sqlite3.connect(':memory:')

文件数据库(持久化)

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

二、核心操作实战

1. 表创建与数据插入

python
def init_db():
conn = sqlite3.connect('library.db')
cursor = conn.cursor()

# 使用WITHOUT ROWID优化表结构
cursor.execute('''CREATE TABLE IF NOT EXISTS books 
                (id INTEGER PRIMARY KEY,
                 title TEXT NOT NULL,
                 author TEXT,
                 price REAL) WITHOUT ROWID''')

# 安全参数化插入
books_data = [
    ('Python基础教程', '董伟明', 59.8),
    ('Flask Web开发', 'Miguel Grinberg', 69.0)
]
cursor.executemany("INSERT INTO books (title, author, price) VALUES (?, ?, ?)", books_data)

conn.commit()
conn.close()

注意事项
- 始终使用参数化查询(?占位符)防止SQL注入
- 对于批量插入,executemany()比循环execute效率高30倍以上
- WITHOUT ROWID可提升约25%的查询性能

2. 数据查询进阶

python
def query_books():
conn = sqlite3.connect('library.db')

# 启用行工厂(获取列名)
conn.row_factory = sqlite3.Row

cursor = conn.cursor()

# 条件查询示例
min_price = 60
cursor.execute("SELECT * FROM books WHERE price > ? ORDER BY price DESC", (min_price,))

# 获取结果的不同方式
print(cursor.fetchone())  # 单条记录
print(cursor.fetchall())  # 剩余所有记录

# 使用行工厂后可以通过列名访问
for row in cursor.execute("SELECT title, author FROM books"):
    print(f"{row['title']} by {row['author']}")

conn.close()

3. 事务与异常处理

python
def safe_update():
conn = None
try:
conn = sqlite3.connect('library.db')
cursor = conn.cursor()

    # 开启事务
    conn.execute("BEGIN TRANSACTION")

    cursor.execute("UPDATE books SET price = price * 1.1 WHERE author = ?", ('董伟明',))

    # 模拟失败场景
    if False:
        raise ValueError("模拟异常")

    conn.commit()
except Exception as e:
    print(f"操作失败: {e}")
    if conn:
        conn.rollback()
finally:
    if conn:
        conn.close()

三、性能优化技巧

  1. 批量操作:使用executemany()批量处理数据时,速度比单条处理快50-100倍
  2. WAL模式:启用写前日志可提升并发性能
    python conn.execute("PRAGMA journal_mode=WAL")
  3. 内存数据库:对临时数据使用:memory:数据库
  4. 连接池管理:频繁创建连接开销大,建议使用连接池工具

四、实际项目应用

在FlaskWeb项目中集成SQLite的典型模式:

python
import sqlite3
from flask import Flask, g

app = Flask(name)

def getdb(): if 'db' not in g: g.db = sqlite3.connect('app.db') g.db.rowfactory = sqlite3.Row
return g.db

@app.teardownappcontext def closedb(e=None):
db = g.pop('db', None)
if db is not None:
db.close()


结语:SQLite虽小,却支撑着全球数十亿设备的运行。掌握Python与SQLite的配合使用,能为你的项目提供简单可靠的数据存储方案。当需要更高性能时,可以考虑结合SQLite的扩展功能如JSON1、FTS5等模块,将这个小巧的数据库发挥到极致。

Python SQLite轻量数据库SQLite3教程Python数据库操作嵌入式数据库
朗读
赞(0)
版权属于:

至尊技术网

本文链接:

https://www.zzwws.cn/archives/32074/(转载时请注明本文出处及文章链接)

评论 (0)