python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python sqlite3操作SQLite

Python中如何使用sqlite3操作SQLite数据库详解

作者:莫比乌斯之梦

这篇文章主要介绍了Python中SQLite数据库的使用,包括连接数据库、创建表、数据增删改查、事务管理和参数化查询等,并提供了操作示例,需要的朋友可以参考下

前言

在 Python 开发中,SQLite 是一种轻量级的关系型数据库,它无需单独安装数据库服务器,所有数据存储在一个单独的文件中,适用于小型应用、移动开发、数据分析等场景。Python 提供了内置的 sqlite3 模块,方便我们操作 SQLite 数据库。本文将详细介绍 sqlite3 模块的使用,包括数据库连接、表操作、数据增删改查(CRUD),以及常见的事务管理参数化查询,帮助你快速掌握 Python 操作 SQLite 数据库的方法。

1. 为什么选择 SQLite?

✅ 零配置:Python 内置支持,无需安装额外数据库服务。

✅ 文件存储:数据库仅是一个 .db 文件,便于管理。

✅ 轻量高效:适用于小型应用、测试环境、移动端存储。

✅ SQL 支持:支持 SQL 语法,易于与其他数据库迁移。

📌 SQLite 适用场景

2. 连接 SQLite 数据库

2.1 连接或创建数据库

使用 sqlite3.connect() 连接数据库:

import sqlite3

# 连接数据库(如果不存在则创建)
conn = sqlite3.connect("example.db")

print("数据库连接成功")

📌 特点

2.2 获取游标(Cursor)

数据库操作需要使用 游标对象(cursor)

cursor = conn.cursor()

📌 作用

3. 创建表(CREATE TABLE)

使用 CREATE TABLE 语句创建数据库表:

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        city TEXT
    )
''')
conn.commit()  # 提交更改
print("表创建成功")

📌 解析

4. 插入数据(INSERT INTO)

4.1 插入单条数据

cursor.execute("INSERT INTO users (name, age, city) VALUES (?, ?, ?)",
               ("Alice", 25, "New York"))
conn.commit()
print("插入数据成功")

📌 注意

4.2 插入多条数据(executemany())

users = [
    ("Bob", 30, "San Francisco"),
    ("Charlie", 28, "Los Angeles"),
    ("David", 35, "Seattle")
]

cursor.executemany("INSERT INTO users (name, age, city) VALUES (?, ?, ?)", users)
conn.commit()
print("批量插入成功")

📌 适用于

5. 查询数据(SELECT)

5.1 查询所有数据

cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()

for row in rows:
    print(row)

📌 fetchall() 获取所有数据,返回列表

(1, 'Alice', 25, 'New York')
(2, 'Bob', 30, 'San Francisco')
(3, 'Charlie', 28, 'Los Angeles')

5.2 查询单条数据(fetchone())

cursor.execute("SELECT * FROM users WHERE name = ?", ("Alice",))
user = cursor.fetchone()
print(user)

📌 fetchone() 获取单条数据,适用于查询唯一记录

6. 更新数据(UPDATE)

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, "Alice"))
conn.commit()
print("数据更新成功")

📌 确保

7. 删除数据(DELETE)

cursor.execute("DELETE FROM users WHERE name = ?", ("David",))
conn.commit()
print("数据删除成功")

📌 务必小心

8. 事务管理(commit() 和 rollback())

8.1 commit() 提交事务

conn.commit()  # 确保数据写入数据库

📌 每次 INSERT、UPDATE、DELETE 后,都要 commit() 确保数据持久化

8.2 rollback() 回滚事务

try:
    cursor.execute("UPDATE users SET age = ? WHERE name = ?", (100, "Charlie"))
    raise Exception("模拟异常")  # 模拟错误
    conn.commit()
except Exception as e:
    conn.rollback()  # 发生错误时回滚
    print("事务回滚:", e)

📌 作用

9. 关闭数据库连接

cursor.close()
conn.close()
print("数据库连接已关闭")

📌 最佳实践

10. 结合 with 语句自动管理连接

Python 提供 with 语法,自动关闭数据库连接

with sqlite3.connect("example.db") as conn:
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM users")
    print(cursor.fetchall())

📌 优势

11. 使用 Row 以字典方式访问数据

默认 fetchall() 返回元组

cursor.execute("SELECT * FROM users")
print(cursor.fetchone())  # (1, 'Alice', 25, 'New York')

可以改用 sqlite3.Row 使数据可用字典访问

conn.row_factory = sqlite3.Row  # 设置行工厂
cursor = conn.cursor()

cursor.execute("SELECT * FROM users")
row = cursor.fetchone()
print(row["name"], row["age"])  # Alice 25

📌 适用于

12. 结论

操作代码示例
连接数据库conn = sqlite3.connect("example.db")
创建表CREATE TABLE users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)
插入数据INSERT INTO users (name, age) VALUES (?, ?)
查询数据SELECT * FROM users
更新数据UPDATE users SET age = ? WHERE name = ?
删除数据DELETE FROM users WHERE name = ?
事务管理commit() / rollback()
关闭连接conn.close()

sqlite3 是 Python 内置的数据库模块,适用于小型应用、测试、数据存储等场景。掌握这些操作,你就可以轻松管理 SQLite 数据库,提升开发效率!

总结

到此这篇关于Python中如何使用sqlite3操作SQLite数据库的文章就介绍到这了,更多相关Python sqlite3操作SQLite内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文