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

news2024/11/16 21:29:12

一文搞懂: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 sqlite3

def create_connection(db_file):
    """ 创建数据库连接 """
    conn = None
    try:
        conn = sqlite3.connect(db_file)
        return conn
    except sqlite3.Error as e:
        print(e)
    return conn

def 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.coloradmin.cn/o/1372225.html

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

相关文章

作业--day44

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

Win10下python3和python2同时安装并解决pip共存问题

特别说明,本文是在Windows64位系统下进行的,32位系统请下载相应版本的安装包,安装方法类似。 使用python开发,环境有Python2和 python3 两种,有时候需要两种环境切换使用,下面提供详细教程一份。 1、下载…

MySQL之导入、导出远程备份

一、Navicat工具导入、导出 1.1 导入 第一步: 右键,点击运行SQL文件 第二步: 选择要运行的SQL,点击开始 第三步: 关闭即可 1.2 导出 第一步: 右键选择,导出向导 第二步: 选择SQL脚…

QT开发 QT5.15.2安装(换源极速安装)

▬▬▬▬▬▶QT安装◀▬▬▬▬▬ 🎄QT下载器获取 点我下载(●’◡’●) 🎄下载器放自定义文件夹(路径全英文) 文件名改短好操作 🎄在自定路径唤出cmd窗口 🎄输入命令开始换源安装 ins.exe --mirror https://mirrors.ustc.ed…

空间转录组与单细胞转录组联合分析——MIA,代码分享(Nature Biotechnology :)

​ 原文:Integrating microarray-based spatial transcriptomics and single-cell RNA-seq reveals tissue architecture in pancreatic ductal adenocarcinomas | Nature Biotechnology 研究者采用 MIA 联合 scRNAseq 和 ST 数据,分析原发性胰腺导管腺癌…

SCS模型(径流曲线法)概述

目录 1.介绍:2.计算公式:参考文献:小结: 1.介绍: SCS模型(径流曲线法)是由美国农业部水土保持局(Soil Conservation Service) 基于经验提出,最初用于预测在农业用地小型流域降雨所累…

秒变办公达人,只因用了这5款在线协同文档app!

在日常工作中,我们不可避免地需要处理各种文档,有时你可能会为如何高效地管理这些文档而感到烦恼,或是不知道如何挑选合适的在线文档工具? 不用担心!在这篇文章中,我们将介绍5个好用的在线文档工具App&…

Gamebryo游戏引擎源码(gb2.6+gb3.2+gb4.0+中文手册)

Gamebryo游戏引擎源码,是源码,是源码,是源码。喜欢研究游戏的可以下载研究研究,代码写得很好,有很多借得参考的地方。 Gamebryo游戏引擎源码(gb2.6gb3.2gb4.0中文手册) 下载地址: 链…

linux --proc文件夹学习笔记

内容在飞书文档: Docshttps://r0dhfl3ujy9.feishu.cn/docx/Xe2wd23MToSmGrxUm9kcVHrPn7g?fromfrom_copylink

CentOS 6 制作openssh 9.6 p1 rpm包(含ssh-copy-id、openssl) —— 筑梦之路

openssh 9.6 需要openssl 1.1.1 以上版本,因此需要先安装openssl 1.1.1,可阅读这篇升级更新openssl版本到1.1.1w CentOS 6 制作openssl 1.1.1w rpm包 —— 筑梦之路-CSDN博客 CentOS 6很久都停止更新和支持,关于此版本的写的不多&#xff…

OpenHarmony之编译构建使用指导

目录结构 /build # 编译构建主目录├── __pycache__ ├── build_scripts/ # 编译相关的python脚本 ├── common/ ├── config/ # 编译相关的配置项 ├─…

vue3 ts defineProps、defineEmits、defineExpose、defineOptions、defineSlots

文章目录 前言一、defineProps二、defineEmits三、defineExpose四、defineOptions( Vue3.3 新特性)五、defineSlots(Vue3.3 新特性) 前言 本章我们来讲解vue3 ts 中 defineProps、defineEmits、defineExpose、defineOptions、defineSlots的使用及作用。 …

多机TCP通讯之hello world(C++)

文章目录 TCP是什么准备工作CMakeLists.txt服务端代码客户端代码参考 TCP是什么 TCP(传输控制协议)是一种在计算机网络中广泛使用的协议,它提供了可靠的、面向连接的数据传输服务。TCP 是 OSI 模型中的传输层协议,它确保了数据的…

RPA财务机器人在厦门市海沧医院财务管理流程优化汇总的应用RPA全球生态 2024-01-05 17:27 发表于河北

目前国内外研究人员对于RPA机器人在财务管理流程优化领域中的应用研究层出不穷,但现有研究成果主要集中在财务业务单一领域,缺乏财务管理整体流程一体化管控的研究。RPA机器人的功能绝非单一的财务业务处理,无论从自身技术发展,或…

php处理高并发下单减库存解决

目录 一: 问题描述 二:可能方案 三:加锁方案 一: 问题描述 处理高并发下的库存减少是电商系统中的一大挑战。当多个用户同时尝试下单购买同一商品时,如何确保库存的准确性,同时保证系统的高可用性&#…

(23)Linux的软硬连接

前言:上一章我们讲解了 inode,为文件系统收了尾,这几章我们充分地讲解完了文件系统的知识点,现在我们开始开始学习软硬链接了。 软硬链接 1、Linux 下的快捷方式:软链接 上一章我们介绍完了 inode ,我们…

SpringCloudAlibaba微服务架构实战派上下册技术交流!

另外我的新书RocketMQ消息中间件实战派上下册,在京东已经上架啦,目前都是5折,非常的实惠。 https://item.jd.com/14337086.html​编辑https://item.jd.com/14337086.html “RocketMQ消息中间件实战派上下册”是我既“Spring Cloud Alibaba微…

力扣最热一百题——只出现一次的数字

这个合集已经很久没有更新了,今天来更新更新~~~ 目录 力扣题号 题目 题目描述 示例 提示 题解 Java解法一:Map集合 Java解法二:位运算 C位运算代码 力扣题号 136. 只出现一次的数字 - 力扣(LeetCode) 下述题…

FS【1】:SSP

文章目录 前言1. Abstract2. Introduction2.1. Motivation2.1.1. Few-shot Segmentation (FSS) Task2.1.2. Few-shot Segmentation (FSS) Problem 2.2. Contribution 3. Methods3.1. Motivation3.2. Overview of the architecture4.3. Self-support Prototype4.4. Adaptive Sel…

golang并发安全-select

前面说了golang的channel, 今天我们看看golang select 是怎么实现的。 数据结构 type scase struct {c *hchan // chanelem unsafe.Pointer // 数据 } select 非默认的case 中都是处理channel 的 接受和发送,所有scase 结构体中c是用来存储…