首页 › 论坛 › 置顶 › Python中的SQLite3模块
正在查看 1 个帖子:1-1 (共 1 个帖子)
-
作者帖子
-
2025-07-17 16:17 #25130Q QPY课程团队管理员
sqlite3 Python模块指南
SQLite3是一个用C语言编写的Python模块,允许与轻量级的本地SQL数据库进行交互。它是Python标准库的一部分,无需安装。本文假设您了解基本的Python和SQL。
设置
开始之前:
import sqlite3 as sql
然后建立连接和游标:
connection = sql.connect("my_database.db") cursor = connection.cursor()
connection
将你的 Python 程序与数据库连接起来。
cursor
发送 SQL 命令并获取结果。
SQL 查询类型
你将使用两种主要类型的 SQL 命令:
DDL(数据定义语言):
CREATE
、DROP
、ALTER
DML(数据操作语言):INSERT
、SELECT
、UPDATE
、DELETE
DDL 示例:创建和删除表
connection = sql.connect("my_database.db")
cursor = connection.cursor() cursor.execute(""" 如果不存在则创建用户表 ( id 整数 主键 自增, name 文本 不为空, age 整数 ); """) # 示例 删除 cursor.execute("如果存在则删除旧用户表;") connection.commit() connection.close()
所有的 DDL 命令 必须 后跟
connection.commit()
,否则您的更改将不会被保存。
DML 示例:插入和选择数据
插入示例
connection = sql.connect("my_database.db") cursor = connection.cursor()
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Alice", 25)) cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ("Bob", 30)) connection.commit() connection.close()
选择示例
connection = sql.connect("my_database.db") cursor = connection.cursor() cursor.execute("SELECT * FROM users") data = cursor.fetchall() connection.close()
print(data)
所有的 SELECT 命令 必须 后跟适当的获取命令。
使用以下方法来检索数据:
方法 返回值 fetchone()
作为元组返回的一行 fetchmany(n)
作为元组列表返回的下一 n
行fetchall()
作为元组列表返回的所有行 示例:
cursor.execute("SELECT * FROM users") rows = cursor.fetchall() for row in rows: print(row)
输出:
[(1, 'Alice', 25), (2, 'Bob', 30)]
下一步
现在您已经了解了
sqlite3
模块的基础知识以及如何与数据库进行交互,以下是一些我们可能还需要讨论的重要主题:使用
with
语句使用
with
可以确保您的数据库连接在发生错误时自动关闭:import sqlite3 as sql with sql.connect("my_database.db") as connection: cursor = connection.cursor() cursor.execute("SELECT * FROM users") data = cursor.fetchall() print(data)
基本错误处理
将您的数据库操作包装在try-except块中,以捕获
DatabaseError
:try: connection = sql.connect("my_database.db") cursor = connection.cursor()
cursor.execute("从用户表中选择所有记录") data = cursor.fetchall() except sql.DatabaseError as e: print(f"发生数据库错误: {e}") finally: connection.close()
异常
描述
sqlite3.DatabaseError
通用数据库错误
sqlite3.IntegrityError
约束违反(例如,唯一性、外键)
sqlite3.OperationalError
操作问题(例如,缺少表、语法错误)
sqlite3.ProgrammingError
API误用(例如,参数错误)
sqlite3.InterfaceError
与数据库接口相关的错误
防止SQL注入
始终使用参数化查询(带有
?
占位符)来安全地插入用户输入,避免SQL注入风险:name = "Alice" age = 25
cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", (name, age))
-
作者帖子
正在查看 1 个帖子:1-1 (共 1 个帖子)
- 哎呀,回复话题必需登录。