news 2026/5/15 23:37:32

Python数据库实战:SQLite3深度解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python数据库实战:SQLite3深度解析

Python数据库实战:SQLite3深度解析

引言

在Python开发中,SQLite是构建轻量级数据库应用的核心技术。作为一名从Rust转向Python的后端开发者,我深刻体会到sqlite3在嵌入式数据库方面的优势。sqlite3是Python标准库中内置的SQLite数据库接口,提供了简洁的API和完整的功能。

sqlite3核心概念

什么是sqlite3

sqlite3是Python标准库中内置的SQLite数据库接口,具有以下特点:

  • 内置模块:无需额外安装
  • 轻量级:嵌入式数据库,无需独立服务
  • 事务支持:支持ACID事务
  • 完整SQL支持:支持标准SQL语法
  • 跨平台:支持多种操作系统

架构设计

┌─────────────────────────────────────────────────────────────┐ │ sqlite3 架构 │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ 应用程序 │───▶│ sqlite3 │───▶│ SQLite文件 │ │ │ │ (Application)│ │ 接口层 │ │ (Database) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ │ │ │ │ ▼ ▼ │ │ ┌──────────────────────────────────────────────────────┐ │ │ │ SQL解析引擎 │ │ │ └──────────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘

环境搭建与基础配置

基本连接

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute(''' CREATE TABLE IF NOT EXISTS users ( id INTEGER PRIMARY KEY, name TEXT NOT NULL, email TEXT NOT NULL UNIQUE ) ''') conn.commit() conn.close()

插入数据

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() user = ('张三', 'zhangsan@example.com') cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', user) conn.commit() conn.close()

高级特性实战

查询数据

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('SELECT * FROM users') users = cursor.fetchall() for user in users: print(user) cursor.execute('SELECT * FROM users WHERE id = ?', (1,)) user = cursor.fetchone() print(user) conn.close()

更新数据

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('UPDATE users SET name = ? WHERE id = ?', ('李四', 1)) conn.commit() conn.close()

删除数据

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('DELETE FROM users WHERE id = ?', (1,)) conn.commit() conn.close()

实际业务场景

场景一:用户管理

import sqlite3 class UserManager: def __init__(self, db_path): self.db_path = db_path def _get_connection(self): return sqlite3.connect(self.db_path) def create_user(self, name, email): conn = self._get_connection() cursor = conn.cursor() try: cursor.execute('INSERT INTO users (name, email) VALUES (?, ?)', (name, email)) conn.commit() return cursor.lastrowid finally: conn.close() def get_user(self, user_id): conn = self._get_connection() cursor = conn.cursor() try: cursor.execute('SELECT * FROM users WHERE id = ?', (user_id,)) return cursor.fetchone() finally: conn.close() def get_all_users(self): conn = self._get_connection() cursor = conn.cursor() try: cursor.execute('SELECT * FROM users') return cursor.fetchall() finally: conn.close()

场景二:事务处理

import sqlite3 def transfer_funds(from_id, to_id, amount): conn = sqlite3.connect('bank.db') cursor = conn.cursor() try: cursor.execute('BEGIN TRANSACTION') cursor.execute('SELECT balance FROM accounts WHERE id = ?', (from_id,)) from_balance = cursor.fetchone()[0] if from_balance < amount: raise ValueError('Insufficient funds') cursor.execute('UPDATE accounts SET balance = balance - ? WHERE id = ?', (amount, from_id)) cursor.execute('UPDATE accounts SET balance = balance + ? WHERE id = ?', (amount, to_id)) conn.commit() return True except Exception as e: conn.rollback() raise e finally: conn.close()

性能优化

使用索引

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() cursor.execute('CREATE INDEX IF NOT EXISTS idx_users_email ON users(email)') conn.commit() conn.close()

批量操作

import sqlite3 conn = sqlite3.connect('example.db') cursor = conn.cursor() users = [ ('张三', 'zhangsan@example.com'), ('李四', 'lisi@example.com'), ('王五', 'wangwu@example.com') ] cursor.executemany('INSERT INTO users (name, email) VALUES (?, ?)', users) conn.commit() conn.close()

总结

sqlite3为Python开发者提供了轻量级的数据库操作能力。通过内置模块和简洁的API,sqlite3使得嵌入式数据库开发变得非常容易。从Rust开发者的角度来看,sqlite3比Rust的rusqlite更加易用和方便。

在实际项目中,建议合理使用索引和事务来优化性能,并注意连接管理和错误处理。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/15 23:31:51

EvaDB:用SQL调用AI模型,让非结构化数据分析像查询数据库一样简单

1. 项目概述&#xff1a;当数据库遇上AI&#xff0c;EvaDB的破局思路如果你正在处理海量的非结构化数据——比如一堆视频文件&#xff0c;想从中找出所有包含“猫”的片段&#xff1b;或者面对一个庞大的PDF文档库&#xff0c;需要快速提炼出所有合同里的关键条款——你的第一反…

作者头像 李华
网站建设 2026/5/15 23:28:05

ARM Profiler与RTSM实时系统模型性能优化实战

1. ARM Profiler与RTSM实时系统模型概述在嵌入式系统开发领域&#xff0c;性能优化始终是工程师面临的核心挑战。ARM Profiler结合Real-Time System Model&#xff08;RTSM&#xff09;的解决方案&#xff0c;为开发者提供了在虚拟硬件环境中进行深度性能分析的能力。这套工具链…

作者头像 李华
网站建设 2026/5/15 23:27:08

告别死记硬背:8个真实开发场景,带你吃透Git实战操作

告别死记硬背&#xff1a;8个真实开发场景&#xff0c;带你吃透Git实战操作 很多人学Git&#xff0c;都停留在「add、commit、push、pull」这四件套&#xff0c;真到团队协作、线上bug紧急修复、代码冲突、误提交敏感信息、分支混乱的时候&#xff0c;瞬间手忙脚乱。 项目介绍&…

作者头像 李华