【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.mzph.cn/news/611341.shtml

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

相关文章

NPN PNP磁性开关区别

自记: 网上有些前后内容是相反的,估计自己就没明白,此为分析后得出结论,看完后可懂 1、NPN(源型):当导通时输出低电平 当导通时,信号输出线out和0v线连接,相当于输出低电…

OCP NVME SSD规范解读-6.标准日志要求-1

4.8 Log Page Requirements章节在NVMe规范中主要涵盖了设备应支持的日志页面(Log Pages)的要求。日志页面是存储控制器用于报告内部状态、性能统计和其他关键信息的结构化数据区域,它们对系统管理和故障诊断至关重要。 本文,我们…

行走在深度学习的幻觉中:问题缘由与解决方案

如何解决大模型的「幻觉」问题? 我们在使用深度学习大模型如LLM(Large Language Models)时,可能会遇到一种被称为“幻觉”的现象。没错,它并不是人脑中的错觉,而是模型对特定模式的过度依赖,这…

24/1/10 qt work

1. 完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&…

特征工程:图像数据不足时的处理办法

在机器学习中,绝大部分模型都需要大量的数据进行训练和学习(包括有监督学习和无监督学习),然而在实际应用中经常会遇到训练数据不足的问题。比如图像分类,作为计算机视觉最基本的任务之一,其目标是将每幅图…

红队打靶练习:TOMMY BOY: 1

目录 信息收集 1、arp 2、nmap 3、nikto 4、whatweb WEB robots.txt get flag1 get flag2 FTP登录 文件下载 更改代理 ffuf爆破 get flag3 crunch密码生成 wpscan 1、密码爆破 2、登录wordpress ssh登录 get flag4 信息收集 get flag5 信息收集 1、arp …

1-01初识C语言

一、概述 C语言是贝尔实验室的Ken Thompson(肯汤普逊)、Dennis Ritchie(丹尼斯里奇)等人开发的UNIX 操作系统的“副产品”,诞生于1970年代初。 Thompson和Ritchie共同创作完成了Unix操作系统,他们都被称为…

可编程线性霍尔传感器 IC

一、产品概述 CC6521/2 是一款高性能的可编程线性霍尔传感器 IC,采用先进的 BiCMOS 制程生产,具有霍尔系数高的优点,芯片内部包含了高灵敏度 霍尔传感器,霍尔信号预放大器,高精度的霍尔温度补偿单元,振荡…

【博士每天一篇文-算法】Graph Structure of Neural Networks

阅读时间:2023-11-12 1 介绍 年份:2020 作者:尤家轩 斯坦福大学 期刊: International Conference on Machine Learning. 引用量:130 论文探讨了神经网络的图结构与其预测性能之间的关系。作者提出了一种新的基于图的…

2024-01-01 K 次取反后最大化的数组和和加油站以及根据身高重建队列

1005. K 次取反后最大化的数组和 思路:每一次取反最小值即可!贪心的思路就是先排序,反转负数的值,后在贪心反转最小值 class Solution:def largestSumAfterKNegations(self, nums: List[int], k: int) -> int:count 0while …

Unity中URP下开启和使用深度图

文章目录 前言一、在Unity中打开URP下的深度图二、在Shader中开启深度图1、使用不透明渲染队列才可以使用深度图2、半透明渲染队列深度图就会关闭 三、URP深度图 和 BRP深度图的区别四、在Shader中,使用深度图1、定义纹理和采样器2、在片元着色器对深度图采样并且输…

LeetCode刷题--- 最小路径和

个人主页:元清加油_【C】,【C语言】,【数据结构与算法】-CSDN博客 个人专栏 力扣递归算法题 http://t.csdnimg.cn/yUl2I 【C】 ​​​​​​http://t.csdnimg.cn/6AbpV 数据结构与算法 ​​​http://t.csdnimg.cn/hKh2l 前言:这个专栏主要讲述动…

setup 语法糖

只有vue3.2以上版本可以使用 优点: 更少的样板内容,更简洁的代码 能够使用纯 Typescript 声明props 和抛出事件 更好的运行时性能 更好的IDE类型推断性能 在sciprt标识上加上setup 顶层绑定都可以使用 不需要return ,可以直接使用 使用组件…

Redis异步写失败后补数逻辑设计

背景 最近各种机房事故频发,所以很多公司都对Redis存储等进行异步多活,我们公司采用的方式是通过客户端双写的方式来实现异地Redis机房的备份,但是当异地机房出现临时网络故障时,就涉及到了如何进行补数的操作,本文就…

理解Herbrand Equivalence

笔者最近在看GVN的一系列论文,总会看到一个概念叫Herbran Equivalence,依靠这种定义,能够判断一个GVN算法是否是complete的,也即检测一个算法是否是precise的,只有找到所有Herbrand Equivalence关系的算法才能称得上是…

2024.1.10

完善对话框,点击登录对话框,如果账号和密码匹配,则弹出信息对话框,给出提示”登录成功“,提供一个Ok按钮,用户点击Ok后,关闭登录界面,跳转到其他界面 如果账号和密码不匹配&#xf…

01-你好Python-python环境安装 python解释器的安装 pycharm的安装

python环境安装 官方网址:https://python.org 这里可以下载最新版本的,下载完成以后在自己的浏览器文件下载的文件夹中找到该文件 下载速度可能会比较慢,这里已经提供好了文件,可以直接点击安装 点击Customize installation 点击…

pulsar的架构与特性记录

一、什么是云原生 云原生的概念是2013年Matt Stine提出的,到目前为止,云原生的概念发生了多次变更,目前最新对云原生定义为: Devps持续交付微服务容器 而符合云原生架构的应用程序是: 采用开源堆栈(K8SDocker)进行容器化,基于微服务架构提高灵…

人工智能利用深度学习技术增强高级驾驶辅助系统(ADAS)

深度学习通过实时传感器数据增强高级驾驶辅助系统(ADAS),实现精确的物体检测、碰撞预测和主动决策。 人工智能和机器学习利用深度学习技术的优势,使高级驾驶辅助系统(ADAS)发生了重大变革。ADAS在很大程度上依赖深度学习来分析和解释从各种传感器获得的…

Flutter 中使用 ICON

Flutter Icon URL : https://fonts.google.com/icons: 在Flutter中使用 Icon 步骤如下: 导入图标库 在Dart 文件中导入 material.dart 包,该包包含了 Flutter 的图标库。 import package:flutter/material.dart;使用图标组件 …