Python在SQLite中的应用:从入门到进阶

Python在SQLite中的应用:从入门到进阶

Python作为一门高效、灵活的编程语言,广泛应用于各种数据处理和分析任务。而SQLite是一种轻量级的数据库管理系统,特别适合于嵌入式应用和小型项目。在本篇博文中,我们将深入探讨Python在SQLite中的应用,帮助读者从零开始,逐步掌握这项技能。

为什么选择SQLite?

SQLite是一种嵌入式的关系型数据库管理系统,具有以下几个显著特点:

  1. 轻量级:SQLite非常小巧,无需安装即可使用,适合嵌入到各种应用中。
  2. 易于使用:SQLite的语法与标准SQL非常接近,对于有SQL基础的开发者来说,入门非常简单。
  3. 高性能:虽然是轻量级数据库,但SQLite在处理小型和中型数据集时性能非常优越。
  4. 跨平台:SQLite可以运行在各种操作系统上,包括Windows、Linux和macOS。

准备工作

在开始之前,请确保您的系统中已安装了Python。如果尚未安装,请访问Python官方网站进行下载和安装。接下来,我们需要安装SQLite的Python库,即sqlite3。幸运的是,sqlite3是Python标准库的一部分,无需额外安装。

基础操作

创建数据库和表

首先,我们需要创建一个SQLite数据库文件,并在其中创建一张表。例如,我们可以创建一个名为students.db的数据库,并在其中创建一个students表,存储学生的信息。

import sqlite3# 连接到SQLite数据库(如果数据库不存在,会自动创建)
conn = sqlite3.connect('students.db')# 创建一个游标对象
cur = conn.cursor()# 创建学生表
cur.execute('''
CREATE TABLE IF NOT EXISTS students (id INTEGER PRIMARY KEY AUTOINCREMENT,name TEXT NOT NULL,age INTEGER,grade TEXT
)
''')# 提交更改并关闭连接
conn.commit()
conn.close()

插入数据

创建表后,我们可以向表中插入数据。以下示例展示了如何向students表中插入几条记录。

# 重新连接到数据库
conn = sqlite3.connect('students.db')
cur = conn.cursor()# 插入数据
cur.execute('INSERT INTO students (name, age, grade) VALUES (?, ?, ?)', ('Alice', 20, 'A'))
cur.execute('INSERT INTO students (name, age, grade) VALUES (?, ?, ?)', ('Bob', 22, 'B'))
cur.execute('INSERT INTO students (name, age, grade) VALUES (?, ?, ?)', ('Charlie', 23, 'C'))# 提交更改并关闭连接
conn.commit()
conn.close()

查询数据

插入数据后,我们可以查询数据库中的记录。

conn = sqlite3.connect('students.db')
cur = conn.cursor()# 查询数据
cur.execute('SELECT * FROM students')
rows = cur.fetchall()# 打印查询结果
for row in rows:print(row)conn.close()

更新和删除数据

除了插入和查询数据,我们还可以更新和删除数据。

conn = sqlite3.connect('students.db')
cur = conn.cursor()# 更新数据
cur.execute('UPDATE students SET grade = ? WHERE name = ?', ('A+', 'Bob'))# 删除数据
cur.execute('DELETE FROM students WHERE name = ?', ('Charlie',))# 提交更改并关闭连接
conn.commit()
conn.close()

高级应用

在掌握了基本操作后,我们可以进一步探索Python与SQLite结合的高级应用。例如,结合pandas库进行数据分析,或使用flask框架构建Web应用。

使用pandas进行数据分析

pandas是Python中非常强大的数据分析库,我们可以结合pandas从SQLite数据库中读取数据,并进行分析。

import pandas as pd
import sqlite3# 连接到数据库
conn = sqlite3.connect('students.db')# 使用pandas读取数据
df = pd.read_sql_query('SELECT * FROM students', conn)# 数据分析
print(df.describe())conn.close()

使用Flask构建Web应用

Flask是一个轻量级的Web框架,非常适合快速开发Web应用。以下是一个简单的例子,展示如何使用FlaskSQLite构建一个学生信息管理系统。

from flask import Flask, request, jsonify
import sqlite3app = Flask(__name__)# 创建数据库连接函数
def get_db_connection():conn = sqlite3.connect('students.db')conn.row_factory = sqlite3.Rowreturn conn# 获取所有学生信息
@app.route('/students', methods=['GET'])
def get_students():conn = get_db_connection()students = conn.execute('SELECT * FROM students').fetchall()conn.close()return jsonify([dict(ix) for ix in students])# 添加新学生
@app.route('/students', methods=['POST'])
def add_student():new_student = request.get_json()name = new_student['name']age = new_student['age']grade = new_student['grade']conn = get_db_connection()conn.execute('INSERT INTO students (name, age, grade) VALUES (?, ?, ?)', (name, age, grade))conn.commit()conn.close()return jsonify({'status': 'success'}), 201if __name__ == '__main__':app.run(debug=True)

通过以上示例,我们可以看到Python在SQLite中的应用不仅限于简单的数据库操作,还可以扩展到数据分析和Web开发等领域。

PlugLink中的SQLite应用

PlugLink作为一个强大的开源自动化平台,自然少不了对SQLite的支持。在PlugLink中,我们可以通过编写插件来实现对SQLite数据库的操作。以下是一个简单的PlugLink插件示例,展示了如何在插件中使用SQLite。

import sqlite3
from flask import Blueprint, request, jsonifyplugin_blueprint = Blueprint('sqlite_plugin', __name__)@plugin_blueprint.route('/init_db', methods=['POST'])
def init_db():conn = sqlite3.connect('plugin_data.db')cur = conn.cursor()cur.execute('''CREATE TABLE IF NOT EXISTS data (id INTEGER PRIMARY KEY AUTOINCREMENT,info TEXT NOT NULL)''')conn.commit()conn.close()return jsonify({'status': 'database initialized'}), 201@plugin_blueprint.route('/add_data', methods=['POST'])
def add_data():info = request.json.get('info')conn = sqlite3.connect('plugin_data.db')cur = conn.cursor()cur.execute('INSERT INTO data (info) VALUES (?)', (info,))conn.commit()conn.close()return jsonify({'status': 'data added'}), 201@plugin_blueprint.route('/get_data', methods=['GET'])
def get_data():conn = sqlite3.connect('plugin_data.db')cur = conn.cursor()cur.execute('SELECT * FROM data')rows = cur.fetchall()conn.close()return jsonify([dict(row) for row in rows])

通过这个插件,我们可以在PlugLink中实现数据库的初始化、数据添加和数据查询操作。

目前PlugLink发布了开源版和应用版,开源版下载地址:
Github地址:https://github.com/zhengqia/PlugLink
Gitcode地址:https://gitcode.com/zhengiqa8/PlugLink/overview
Gitee地址:https://gitee.com/xinyizq/PlugLink

应用版下载地址:
链接:https://pan.baidu.com/s/19tinAQNFDxs-041Zn7YwcQ?pwd=PLUG
提取码:PLUG

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

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

相关文章

【Academy】OS command injection 操作系统命令注入

OS command injection 操作系统命令注入 1. 什么是OS命令注入?2. 注入操作系统命令3. Blind OS命令注入漏洞4. 注入操作系统命令的方法5. 如何防止OS命令注入攻击 1. 什么是OS命令注入? 操作系统命令注入也称为shell注入。它允许攻击者在运行应用程序的…

车载网络安全指南 网络安全框架(二)

返回总目录->返回总目录<- 目录 一、概述 二、网络安全组织管理 三、网络安全活动 四、支撑保障 一、概述 汽车电子系统网络安全活动框架包含汽车电子系统网络安全活动、组织管理以及支持保障。其中,网络安全管理活动是框架的核心,主要指汽车电子系统生命周期各阶段…

Agentic RAG 与图任务编排

一个朴素的 RAG 系统流程是这样的&#xff1a;先由用户提出问题&#xff0c;然后系统基于用户提问进行召回&#xff0c;对召回结果进行重排序&#xff0c;最后拼接提示词后送给 LLM 生成答案。 一部分简单场景下&#xff0c;朴素的 RAG 已经可以满足用户意图明确的场景的要求&a…

无线麦克风推荐哪些品牌,热门领夹无线麦克风哪个好,看本期文章

​在信息爆炸的今天&#xff0c;高品质的无线领夹麦克风能让声音更清晰响亮。技术发展带来多样化选择同时也带来选择困难。根据多年使用经验和行业反馈&#xff0c;我推荐一系列可靠、易用且性价比高的无线领夹麦克风&#xff0c;助你作出明智选择。还要不知道该怎么选无线领夹…

深度学习探索-基础篇-正则化篇

文章目录 一、正则化介绍1.1 正则化的简介1.2 正则化的方法介绍1.3 正则化的用途 二、正则化的详细介绍2.1 L1正则化2.2 L2正则化2.2.1 L2正则化的工作原理2.2.2 如何在训练中应用L2正则化2.2.3 L2正则化的效果 2.3 Weight Decay2.4 Dropout 一、正则化介绍 1.1 正则化的简介 …

AJAX 综合案例-day2

Bootstrap 弹框 功能&#xff1a;不离开当前页面&#xff0c;显示单独内容&#xff0c;供用户操作 步骤&#xff1a; 1. 引入 bootstrap.css 和 bootstrap.js 2. 准备 弹框标签 &#xff0c;确认结构 3. 通过 自定义属性 &#xff0c;控制弹框的 显示 和 隐藏 1. 通过属性…

【中南林业科技大学校园生存指南】学业指南

前言 本专栏所有内容来自同学们所提供的建议&#xff0c;已经征得收集者意见在此发布。 学业指南 关于学业指南的设想源于诸多任课教师对于课程细节的描述不够清晰明确。同学们在获取课程信息&#xff0c;如教师评价、课程覆盖范围及往年考试试卷时&#xff0c;往往依赖于高…

人工智能 -- AI常用算法

人工智能是一门致力于研究、开发和实现智能系统的学科。它通过模拟人类的认知和学习过程&#xff0c;使计算机系统能够执行类似于人类的智能活动。人工智能技术涵盖了多个领域&#xff0c;包括机器学习、深度学习、自然语言处理和专家系统等。这些技术被广泛应用于各个行业&…

08--LVS网站高并发解决方案

前言&#xff1a;LVS&#xff0c;工作稳定&#xff0c;抗负载能力强&#xff0c;属于运维基础&#xff0c;这里将lvs两种模式的部署方式在这里记录一下&#xff0c;并在示例完成后&#xff0c;补充一下基础概念。本章不可避免的涉及到一些网络方面知识&#xff0c;会形象简单的…

PostgreSQL源码分析——pg_waldump

PG中有个可以打印WAL日志信息的工具&#xff0c;pg_waldump&#xff0c;对于开发人员来说&#xff0c;掌握该工具是十分有必要的。 用法 具体用法这里不去详解&#xff0c;可见官网pg_waldump文档。 postgresslpc:~$ pg_waldump --help pg_waldump decodes and displays Pos…

C#.Net筑基-集合知识全解

01、集合基础知识 .Net 中提供了一系列的管理对象集合的类型&#xff0c;数组、可变列表、字典等。从类型安全上集合分为两类&#xff0c;泛型集合 和 非泛型集合&#xff0c;传统的非泛型集合存储为Object&#xff0c;需要类型转。而泛型集合提供了更好的性能、编译时类型安全…

华为数通——ACL

ACL基本介绍 ACL:访问控制列表&#xff0c;通过端口对数据流进行过滤&#xff0c;ACL判别依据是五元组&#xff1a;源IP地址&#xff0c;源端口&#xff0c;目的IP地址&#xff0c;目的端口、协议。&#xff08;ACL工作于OSI模型第三层&#xff0c;是路由器和三层交换机接口的…

SpringBoot的配置文件和YAML文件的语法

1.SpringBoot的有两种格式的全局配置文件&#xff0c;使用任何一个功能都是一样的 注意&#xff1a;SpringBoot的全局配置文件名都是固定的application.xxx ① application.properties&#xff0c; 这个是默认Spring initializr默认自动生成的配置文件&#xff0c;也是我们属…

2024免费数据恢复工具EasyRecovery电脑必备软件

&#x1f389; 数据安全小能手&#xff0c;EasyRecovery最新功能揭秘 &#x1f513; 亲爱的小红书的朋友们&#xff01;你们有没有因为不小心删除了重要文件而焦急万分&#xff1f;或者因为电脑突然崩溃&#xff0c;担心珍贵的资料丢失&#xff1f;别怕&#xff0c;今天我就来给…

HAL-DMA中断空闲接受不定长数据

title: HAL-DMA中断空闲接受不定长数据 tags: STM32HalCubemax 面对无规律长度的数据帧如何处理&#xff1f; 不定长数据接收可以使用每帧数据发送完成后会有一定的空闲时间"帧的时间间隔?" 如果你想每帧都要可以采用dma加空闲中断的方式空闲中断一次就是一帧数据…

while循环或for循环写九九乘法表

print("\n") i1 while i<9:j1while j<i:print(f"{j}*{i}{i*j}\t",end)j1print("\n")i1 print(\n) for i in range(1,10):for j in range(1,10):if j<i:print(f"{i}*{j}{i*j}\t",end)else:breakprint(\n)

岁月长河中的温柔等待

在那个年代&#xff0c;爱情往往像是一条静静流淌的小河&#xff0c;不动声色却又波澜不惊。在一个小村庄里&#xff0c;住着一对中年夫妻&#xff0c;人们叫他们李大叔和赵阿姨。他们的故事&#xff0c;就像是那个时代的缩影&#xff0c;承载着岁月的沧桑与深情的守候。 李大…

【CT】LeetCode手撕—160. 相交链表

目录 题目1- 思路2- 实现⭐160. 相交链表——题解思路 3- ACM 实现 题目 原题连接&#xff1a;160. 相交链表 1- 思路 模式识别&#xff1a;相交链表 ——> 判断是否相交 思路 保证 headA 是最长的那个链表&#xff0c;之后对其开始依次遍历 2- 实现 ⭐160. 相交链表—…

基于振弦采集仪的地下综合管廊工程安全监测技术研究

基于振弦采集仪的地下综合管廊工程安全监测技术研究 地下综合管廊工程是一项重要的城市基础设施工程&#xff0c;承载着城市供水、供电、供热、排水等重要功能。为了确保地下综合管廊工程的安全运行&#xff0c;需要进行有效的安全监测。本文将重点研究基于振弦采集仪的地下综…

【HarmonyOS NEXT】使用RSA非对称密钥分段加解密

加密 调用cryptoFramework.createAsyKeyGenerator、AsyKeyGenerator.generateKeyPair&#xff0c;生成RSA密钥类型为RSA1024、素数个数为2&#xff08;不填默认&#xff09;的非对称密钥对&#xff08;KeyPair&#xff09;。KeyPair对象中包括公钥PubKey、私钥PriKey。 如何生…