【python基础】一文搞懂:Python 中轻量型数据库 SQLite3 的用法

一文搞懂:Python 中轻量型数据库 SQLite3 的用法

文章目录

  • 一文搞懂:Python 中轻量型数据库 SQLite3 的用法
    • 1 引言
    • 2 SQLite3 简介
    • 3 基本步骤
    • 4 示例代码
      • 4.1 连接数据库
      • 4.2 创建表
      • 4.3 插入数据
      • 4.4 查询数据
      • 4.5 更新/删除数据
      • 4.6 关闭数据库连接
    • 5 实例演示
    • 6 总结

1 引言

在进行数据存储和管理时,我们常常需要一个轻量级而又功能强大的数据库系统。SQLite 是一个极受欢迎的轻量级数据库,它被广泛应用于各种大小的项目中。Python 自带了对 SQLite 的支持,使得在 Python 中使用 SQLite 变得非常简单和直观。本文将详细介绍 Python 中如何使用 SQLite3 库进行数据库操作。

2 SQLite3 简介

SQLite 是一个基于 C 语言的轻量级 SQL 数据库引擎。它不需要独立的服务器进程,数据库完整地存储在一个磁盘文件中。Python 标准库中的 sqlite3 模块提供了一个与 SQLite 数据库交互的接口。

3 基本步骤

使用 SQLite3 模块主要包括以下几个步骤:

  1. 连接数据库
  2. 创建表
  3. 插入数据
  4. 查询数据
  5. 更新/删除数据
  6. 关闭数据库连接

4 示例代码

4.1 连接数据库

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

4.2 创建表

# 创建一个 Cursor 对象
cursor = conn.cursor()# 创建表
cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')

4.3 插入数据

# 插入数据
cursor.execute("INSERT INTO users (name, age) VALUES ('Alice', 30)")
cursor.execute("INSERT INTO users (name, age) VALUES ('Bob', 25)")# 提交事务
conn.commit()

4.4 查询数据

# 查询数据
cursor.execute("SELECT * FROM users")
print(cursor.fetchall())

4.5 更新/删除数据

# 更新数据
cursor.execute("UPDATE users SET age = 31 WHERE name = 'Alice'")# 删除数据
cursor.execute("DELETE FROM users WHERE name = 'Bob'")# 提交事务
conn.commit()

4.6 关闭数据库连接

# 关闭 Cursor 和 Connection
cursor.close()
conn.close()

注意事项

  • 异常处理:在进行数据库操作时,使用 try...except 语句处理异常是一个好习惯。
  • 事务管理:使用 commit() 来保存更改,使用 rollback() 来撤销未提交的事务。
  • 数据库安全:避免 SQL 注入攻击,最好使用参数化查询。

5 实例演示

以下是一个使用 Python 中的 sqlite3 模块来操作 SQLite 数据库的完整示例。这个例子将展示如何连接到数据库、创建表、插入、查询、更新、删除数据,并最终关闭数据库连接。我们将这些操作封装在一个名为 sqlite_example.py 的 Python 文件中。

# sqlite_example.py
import sqlite3def create_connection(db_file):""" 创建数据库连接 """conn = Nonetry:conn = sqlite3.connect(db_file)return connexcept sqlite3.Error as e:print(e)return conndef create_table(conn):""" 创建表 """try:cursor = conn.cursor()cursor.execute('''CREATE TABLE IF NOT EXISTS users(id INTEGER PRIMARY KEY, name TEXT, age INTEGER)''')except sqlite3.Error as e:print(e)def insert_user(conn, user):""" 插入新用户 """try:cursor = conn.cursor()cursor.execute("INSERT INTO users (name, age) VALUES (?, ?)", user)conn.commit()except sqlite3.Error as e:print(e)def update_user(conn, user):""" 更新用户信息 """try:cursor = conn.cursor()cursor.execute("UPDATE users SET age = ? WHERE name = ?", user)conn.commit()except sqlite3.Error as e:print(e)def delete_user(conn, name):""" 删除用户 """try:cursor = conn.cursor()cursor.execute("DELETE FROM users WHERE name = ?", (name,))conn.commit()except sqlite3.Error as e:print(e)def select_all_users(conn):""" 查询所有用户 """try:cursor = conn.cursor()cursor.execute("SELECT * FROM users")rows = cursor.fetchall()for row in rows:print(row)except sqlite3.Error as e:print(e)def main():database = "example.db"# 创建数据库连接conn = create_connection(database)# 创建表if conn is not None:create_table(conn)# 插入数据insert_user(conn, ('Alice', 30))insert_user(conn, ('Bob', 25))# 更新数据update_user(conn, (35, 'Alice'))# 查询数据print("查询到的所有用户:")select_all_users(conn)# 删除数据delete_user(conn, 'Bob')# 再次查询数据print("\n删除后的用户数据:")select_all_users(conn)# 关闭数据库连接conn.close()else:print("Error! 无法创建数据库连接。")if __name__ == '__main__':main()"""控制台输出结果:
查询到的所有用户:(1, 'Alice', 35)(2, 'Alice', 35)(3, 'Bob', 25)删除后的用户数据:(1, 'Alice', 35)(2, 'Alice', 35)"""

在这个脚本中,我们定义了不同的函数来处理数据库的创建连接、创建表、插入、更新、删除和查询操作。main 函数中整合了这些操作的流程。运行这个脚本将在同目录下创建一个名为 example.db 的 SQLite 数据库文件,并在其中执行了一系列的数据库操作。

TIPS
可以通过数据库浏览器查询创建的数据库,下载地址:DB Browser for SQLite官方下载链接
在这里插入图片描述

6 总结

SQLite3 提供了一个简单高效的方式来进行数据库操作,非常适合于轻量级应用。Python 的 sqlite3 模块使得在 Python 中操作 SQLite 数据库变得轻而易举。


希望这篇文章能帮助您理解和使用 Python 中的 SQLite3。如果您有任何疑问或建议,请在评论区留言,让我们共同进步!

作者:climber1121
链接:https://blog.csdn.net/climber1121
来源:CSDN
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/338408.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚拟机安装intel架构的银河麒麟V10(SP1)

一 背景 银河麒麟是国产操作系统之一,是基于Linux内核的桌面操作系统,有自己的应用中心,具有一定的生态系统。今从官网下载了V10(SP1)镜像文件,在Windowns的VMware虚拟机上安装试用。 官网:http…

web缓存之nginx缓存

一、nginx缓存知识 网络缓存位于客户端和 "源服务器 "之间,保存着所有可见内容的副本。当客户端请求缓存中存储的内容时,它可以直接从缓存中检索内容,而无需与服务器通信。这样,网络缓存就 "接近 "了客户端&a…

idea git回滚之前提交记录

提交代码时,如果不小心提交了不需要提交的内容,在本地仓库中,此时需要回滚版本,如何回滚 1.打开git控制台,左下角git,选择要处理的分支,选择刷新获取最新git提交记录 2)选中自己commit需要回滚…

软件测试|详解 Pytest 参数化:简化测试用例的编写

简介 Pytest 是一个广泛使用的 Python 测试框架,它提供了丰富的功能来编写和执行测试用例。其中一个强大的特性是参数化,它允许我们通过一种简洁的方式运行多个输入参数的相似测试用例,从而减少冗余的代码。本文将详细介绍 Pytest 的参数化功…

臻牧签约实在RPA,数据流通效率飙升!

臻牧是一家集研发、生产、销售、服务于一体的综合型公司,十年行业领跑,由“国民好演员”海清担任品牌代言人。陕西自有13000平米省级示范乳品工厂,牵手西交大成立小分子羊奶粉研究中心,每年千万投入持续攻坚科研,全线支…

Unicode编码:打破语言壁垒,实现无缝交流

Unicode编码是一种用于表示文本字符的编码系统,它旨在解决不同字符集之间相互兼容的问题,使各种语言和文化得以在数字世界中无缝交流。本文将从多个方面介绍Unicode编码的概念、原理及其在现实中的应用,为您揭示这个神秘编码背后的故事。 Un…

多个显示设备接入卡开机Logo问题分析报告

1 关键字 显示设备;HDMI;开机Logo; 2 问题描述 问题环境: 系统版本:OpenHarmony-3.2-Release 问题现象: 插入外接显示器,启动系统偶现卡开机Logo。 3 问题原因 3.1 正常机制 系统启动成…

汽车IVI中控开发入门及进阶(十二):手机投屏

前言: 汽车座舱有车载中控大屏、仪表/HUD多屏的显示能力,有麦克风/喇叭等车载环境更好的音频输入输出能力,有方控按键、旋钮等方便的反向控制输入能力,还有高精度的车辆数据等。但汽车座舱中控主机硬件计算能力升级迭代周期相对较长,汽车的应用和服务不够丰富。现在很多汽…

跟我学java|Stream流式编程——Stream 的终端操作

orEach 和 peek forEach和peek都是Stream API中用于遍历流中元素的操作方法,它们在处理流的过程中提供了不同的功能和使用场景。 forEach:forEach是一个终端操作方法,它接受一个Consumer函数作为参数,对流中的每个元素执行该函数…

电脑找不到d3dcompiler43.dll怎么修复,教你5个可靠的方法

d3dcompiler43.dll是Windows操作系统中的一个重要动态链接库文件,主要负责Direct3D编译器的相关功能。如果“d3dcompiler43.dll丢失”通常会导致游戏无法正常运行或者程序崩溃。为了解决这个问题,我整理了以下五个解决方法,希望能帮助到遇到相…

软件系统测试怎么进行?对软件产品起到什么作用?

软件系统测试是指通过测试软件的安装、配置、集成和功能等多个方面,以验证系统是否符合预期需求并达到预期目标的过程。在测试过程中,我们会通过数据输入、操作触发、接口调用、异常处理等手段对软件系统进行全面检测。 一、软件系统测试的进行步骤   …

Prometheus监控遇上报错invalid is not a valid start token

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。 问题描述: 使用prometheus采集java应用的metric指标数据,在prometheus界面pod状态为down,报…