python连接sqlite3简单用法完整例子

2025-08-12 21:50

本文主要是介绍python连接sqlite3简单用法完整例子,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《python连接sqlite3简单用法完整例子》SQLite3是一个内置的Python模块,可以通过Python的标准库轻松地使用,无需进行额外安装和配置,:本文主要介绍python连接sqli...

1. 连接到数据库

python 中使用 SQLite3.connect() 方法连接到 SQLite 数据库。如果数据库文件不存在,会自动创建。

import sqlite3
 
# 连接到数据库文件(如果不存在则自动创建)
conn = sqlite3.connect('example.db')
  • 解释
    • connect('example.db'):创建或打开名为 example.db 的数据库文件。
    • 返回的 conn 是数据库连接对象,后续操作都需要通过它进行。

2. 创建游标对象

通过连接对象创建游标(Cursor),用于执行 SQL 语句。

cursor = conn.cursor()
  • 解释
    • 游标对象 cursor 用于执行 create tableinsert intoselect 等 SQL 语句。

3. 创建表

使用 create table 语句创建表,推荐使用 if not exists 避免重复创建。

cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        email TEXT UNIQUE
    )
''')
conn.commit()
  • 解释
    • create table if not exists users:如果表 users 不存在则创建。
    • id integer primary key autoincrementid 是主键,自动递增。
    • name text not nullname 字段为文本类型且不能为空。
    • email text uniqueemail 字段必须唯一。
    • conn.commit():提交事务(必须执行,否则表不会被创建)。

4. 插入数据

使用 insert编程 into 插入数据,推荐使用参数化查询防止 SQL 注入。

# 单条插入
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", 
               ('Alice', 25, 'alice@example.com'))
 
# 多条插入
users_data = [
    ('Bob', 30, 'bob@example.com'),
    ('Charlie', 35, 'charlie@example.com')
]
cursor.executemany("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", users_data)
 
conn.commit()
  • 解释
    • values (?, ?, ?)? 是占位符,Python 会自动替换参数(防止 SQL 注入)。
    • executemany 可一次插入多条数据。
    • conn.commit() 提交事务(插入操作必须提交)。

5. 查询数据

使用 select 查询数据,结果通过 fetchone()fetchall() 获取。

# 查询所有用户
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)
 
# 条件查询
cursor.execute("SELECT name, age FROM users WHERE age > ?", (30,))
result = cursor.fetchone()
print(result)
  • 解释
    • select * from users:查询 users 表的所有字段。
    • fetchall():获取所有查询结果(返回列表)。
    • fetchone():获取单条结果(返回元组)。
    • where age > ?:筛选 age 大于指定值的记录。

6. 更新数据

使用 update 修改已有数据。

cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()
  • 解释
    • set age = ?:将 age 字段更新为新值。
    • where name = ?:仅更新 name 为 'Alice' 的记录。
    • conn.commit() 提交事务。

7. 删除数据

使用 delete from 删除数据。

cursor.execute("DELETE FROM users WHERE name = 'Bob'")
conn.commit()
  • 解释
    • delete from users:删除 users 表中的记录。
    • where name = 'Bob':仅删除 name 为 'Bob' 的记录。
    • conn.commit() 提交事务。

8. 创建索引(可选)

索引可以加速查询,但会降低插入/更新速度。

cursor.execute("CREATE INDEX idx_name ON users (name)")
conn.commit()
  • 解释
    • create index idx_name on usersfpLiv (name):为 users 表的 name 字段创建索引。

9. 事务处理

SQLite 支持事务(begin, commit, rollback),确保操作的原子性。

try:
    # 开始事务
    conn.execute("BEGIN")
    
    # 执行多条操作
    cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", ('David', 28))
    cursor.execute("UPDATE users SET age = ? WHERE name = ?", (29, 'David'))
    
    # 提交事务
    conn.commit()
except Exception as e:
    print("事务失败,回滚:", e)
    conn.rollback()  # 回滚事务
  • 解释
    • begin:显式开始事务(默认情况下,每条语句都是独立事务)。
    • conn.commit():提交事务(所有操作生效)。
    • conn.rollback():回滚事务(撤销所有未提交的操作)。

10. 关闭连接

操作完成后,关闭游标和数据库连接。

cursor.close()
conn.close()
  • 解释
    • 关闭游标和连接释放资源,避免内存泄漏。

完整示例代码

import sqlite3
 
# 1. 连接数据库
conn = sqlite3.connect('example.db')
cursor = conn.cursojsr()
 
# 2. 创建表
cursor.execute('''
    CREATE TABLE IF NOT EXISTS users (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        name TEXT NOT NULL,
        age INTEGER,
        email TEXT UNIQUE
    )
''')
conn.commit()
 
# 3. 插入数据
cursor.execute("INSERT INTO users (name, age, email) VALUES (?, ?, ?)", 
               ('Alice', 25, 'alice@example.com'))
conn.commit()
 
# 4. 查询数据
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
for row in rows:
    print(row)
 
# 5. 更新数据
cursor.execute("UPDATE users SET age = ? WHERE name = ?", (26, 'Alice'))
conn.commit()
 
# js6. 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Alice'")
conn.commit()
 
# 7. 关闭连接
cursor.close()
conn.close()

常见错误与避坑指南

  1. 忘记提交China编程事务

    • 错误:插入/更新/删除后未调用 conn.commit()
    • 修正:每次修改数据后必须调用 conn.commit()
  2. SQL 注入风险

    • 错误:直接拼接 SQL 语句(如 f"INSERT INTO users VALUES ({name})")。
    • 修正:使用参数化查询(如 VALUES (?, ?))。
  3. 字段名与保留字冲突

    • 错误:使用 ordergroup 等保留字作为字段名。
    • 修正:避免使用保留字,或用引号包裹字段名(如 "order")。
  4. 未关闭连接

    • 错误:程序结束时未关闭 cursor 和 conn
    • 修正:使用 with 上下文管理器自动关闭资源:
      with sqlite3.connect('example.db') as conn:
          cursor = conn.cursor()
          # 执行操作...

总结

到此这篇关于python连接sqlite3简单用法的文章就介绍到这了,更多相关python连接sqlite3用法内容请搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于python连接sqlite3简单用法完整例子的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155703

相关文章

Python+FFmpeg实现视频自动化处理的完整指南

《Python+FFmpeg实现视频自动化处理的完整指南》本文总结了一套在Python中使用subprocess.run调用FFmpeg进行视频自动化处理的解决方案,涵盖了跨平台硬件加速、中间素材处理... 目录一、 跨平台硬件加速:统一接口设计1. 核心映射逻辑2. python 实现代码二、 中间素材处

MySQL中between and的基本用法、范围查询示例详解

《MySQL中betweenand的基本用法、范围查询示例详解》BETWEENAND操作符在MySQL中用于选择在两个值之间的数据,包括边界值,它支持数值和日期类型,示例展示了如何使用BETWEEN... 目录一、between and语法二、使用示例2.1、betwphpeen and数值查询2.2、be

python中的flask_sqlalchemy的使用及示例详解

《python中的flask_sqlalchemy的使用及示例详解》文章主要介绍了在使用SQLAlchemy创建模型实例时,通过元类动态创建实例的方式,并说明了如何在实例化时执行__init__方法,... 目录@orm.reconstructorSQLAlchemy的回滚关联其他模型数据库基本操作将数据添

Python实现快速扫描目标主机的开放端口和服务

《Python实现快速扫描目标主机的开放端口和服务》这篇文章主要为大家详细介绍了如何使用Python编写一个功能强大的端口扫描器脚本,实现快速扫描目标主机的开放端口和服务,感兴趣的小伙伴可以了解下... 目录功能介绍场景应用1. 网络安全审计2. 系统管理维护3. 网络故障排查4. 合规性检查报错处理1.

Python轻松实现Word到Markdown的转换

《Python轻松实现Word到Markdown的转换》在文档管理、内容发布等场景中,将Word转换为Markdown格式是常见需求,本文将介绍如何使用FreeSpire.DocforPython实现... 目录一、工具简介二、核心转换实现1. 基础单文件转换2. 批量转换Word文件三、工具特性分析优点局

Python中4大日志记录库比较的终极PK

《Python中4大日志记录库比较的终极PK》日志记录框架是一种工具,可帮助您标准化应用程序中的日志记录过程,:本文主要介绍Python中4大日志记录库比较的相关资料,文中通过代码介绍的非常详细,... 目录一、logging库1、优点2、缺点二、LogAid库三、Loguru库四、Structlogphp

JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)

《JavaWeb项目创建、部署、连接数据库保姆级教程(tomcat)》:本文主要介绍如何在IntelliJIDEA2020.1中创建和部署一个JavaWeb项目,包括创建项目、配置Tomcat服务... 目录简介:一、创建项目二、tomcat部署1、将tomcat解压在一个自己找得到路径2、在idea中添加

C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解

《C++,C#,Rust,Go,Java,Python,JavaScript的性能对比全面讲解》:本文主要介绍C++,C#,Rust,Go,Java,Python,JavaScript性能对比全面... 目录编程语言性能对比、核心优势与最佳使用场景性能对比表格C++C#RustGoJavapythonjav

Python海象运算符:=的具体实现

《Python海象运算符:=的具体实现》海象运算符又称​​赋值表达式,Python3.8后可用,其核心设计是在表达式内部完成变量赋值并返回该值,从而简化代码逻辑,下面就来详细的介绍一下如何使用,感兴趣... 目录简介​​条件判断优化循环控制简化​推导式高效计算​正则匹配与数据提取​性能对比简介海象运算符

python项目环境切换的几种实现方式

《python项目环境切换的几种实现方式》本文主要介绍了python项目环境切换的几种实现方式,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录1. 如何在不同python项目中,安装不同的依赖2. 如何切换到不同项目的工作空间3.创建项目