当前位置: 首页 > news >正文

商城网站推广方案/怎么引流客源最好的方法

商城网站推广方案,怎么引流客源最好的方法,襄阳seo关键词优化公司,外贸建站哪家强外贸网站怎么做目录 一、引言 1.1 SQLite3 简介 1.2 Python sqlite3 模块 二、连接数据库 2.1 导入 sqlite3 模块 2.2 连接数据库 2.3 创建游标对象 三、执行 SQL 语句 3.1 创建表 3.2 插入数据 3.3 查询数据 3.4 更新数据 3.5 删除数据 四、处理查询结果 4.1 fetchall() 4.2…

目录

一、引言

1.1 SQLite3 简介

1.2 Python sqlite3 模块

二、连接数据库

2.1 导入 sqlite3 模块

2.2 连接数据库

2.3 创建游标对象

三、执行 SQL 语句

3.1 创建表

3.2 插入数据

3.3 查询数据

3.4 更新数据

3.5 删除数据

四、处理查询结果

4.1 fetchall()

4.2 fetchone()

4.3 fetchmany(size)

五、关闭连接

六、注意事项

6.1 SQL 注入

6.2 事务管理

6.3 错误处理

七、案例:学生信息管理系统

7.1 数据库结构

7.2 功能实现

7.2.1 初始化数据库

7.2.2 插入学生信息

7.2.3 查询学生信息

7.2.4 更新学生信息

7.2.5 删除学生信息

八、总结


SQLite3 是一种轻量级的数据库引擎,它不需要独立的服务器进程,可以直接读写磁盘上的数据库文件。由于其简单易用和高效的特性,SQLite3 成为了许多应用程序和开发者在开发阶段的首选数据库。Python 的 sqlite3 模块提供了对 SQLite3 数据库的直接支持,允许开发者在 Python 环境中轻松地进行数据库操作。本文将详细讲解如何使用 Python 的 sqlite3 模块进行数据库的基本操作,包括连接数据库、执行 SQL 语句、处理查询结果等,并辅以丰富的代码和案例,帮助新手朋友快速入门。

一、引言

1.1 SQLite3 简介

SQLite3 是一种开源的嵌入式数据库管理系统,它实现了自包含的、高可靠的、具有完整事务处理的 SQL 数据库引擎。SQLite3 最大的特点是轻量级,无需配置、无需服务器即可运行,数据库文件直接存储在磁盘上,非常适合用于小型或中型应用程序,以及作为原型开发阶段的数据库。

1.2 Python sqlite3 模块

Python 的 sqlite3 模块提供了对 SQLite3 数据库的接口,使得 Python 开发者可以方便地执行 SQL 语句、管理数据库。该模块是 Python 的标准库之一,因此无需额外安装即可使用。

二、连接数据库

2.1 导入 sqlite3 模块

首先,需要导入 Python 的 sqlite3 模块。
import sqlite3

2.2 连接数据库

使用 sqlite3.connect() 方法可以连接到 SQLite3 数据库。如果指定的数据库文件不存在,SQLite 会自动创建一个新的数据库文件。

# 连接到SQLite数据库  
# 数据库文件是my_database.db,如果文件不存在,会自动在当前目录创建  
conn = sqlite3.connect('my_database.db')

2.3 创建游标对象

游标(Cursor)对象用于执行 SQL 语句并获取结果。通过连接对象的 cursor() 方法可以创建一个游标对象。

# 创建游标对象  
cursor = conn.cursor()

三、执行 SQL 语句

3.1 创建表

使用游标对象的 execute() 方法可以执行 SQL 语句。以下是一个创建表的示例:

# 创建表  
create_table_sql = """  
CREATE TABLE IF NOT EXISTS student (  id INTEGER PRIMARY KEY AUTOINCREMENT,  name TEXT NOT NULL,  age INTEGER NOT NULL  
);  
"""  
cursor.execute(create_table_sql)  # 提交事务  
conn.commit()

3.2 插入数据

插入数据同样使用 execute() 方法,并可以传入参数来避免 SQL 注入的风险。

# 插入单条数据  
insert_sql = "INSERT INTO student (name, age) VALUES (?, ?)"  
cursor.execute(insert_sql, ('Alice', 20))  # 插入多条数据  
insert_many_sql = "INSERT INTO student (name, age) VALUES (?, ?)"  
students = [('Bob', 22), ('Charlie', 23)]  
cursor.executemany(insert_many_sql, students)  # 提交事务  
conn.commit()

3.3 查询数据

查询数据后,可以使用游标对象的 fetchall()、fetchone() 或 fetchmany(size) 方法来获取查询结果。

# 查询所有数据  
query_sql = "SELECT * FROM student"  
cursor.execute(query_sql)  
results = cursor.fetchall()  for row in results:  print(row)  # 查询单条数据  
query_one_sql = "SELECT * FROM student WHERE id = 1"  
cursor.execute(query_one_sql)  
result = cursor.fetchone()  
print(result)

3.4 更新数据

更新数据同样使用 execute() 方法,并传入更新条件和新的数据值。

# 更新数据  
update_sql = "UPDATE student SET age = ? WHERE name = ?"  
cursor.execute(update_sql, (21, 'Alice'))  # 提交事务  
conn.commit()

3.5 删除数据

删除数据也使用 execute() 方法,并传入删除条件。

# 删除数据  
delete_sql = "DELETE FROM student WHERE name = ?"  
cursor.execute(delete_sql, ('Bob',))  # 提交事务  
conn.commit()

四、处理查询结果

4.1 fetchall()

fetchall() 方法返回查询结果的所有行,结果是一个元组的列表,每个元组代表一行数据。

# 查询并获取所有结果  
cursor.execute("SELECT * FROM student")  
rows = cursor.fetchall()  
for row in rows:  print(row)

4.2 fetchone()

fetchone() 方法返回查询结果的下一行,结果是一个元组,代表一行数据。如果所有行都已返回,则返回 None。

# 查询并获取单行结果  
cursor.execute("SELECT * FROM student WHERE id = 1")  
row = cursor.fetchone()  
print(row)

4.3 fetchmany(size)

fetchmany(size) 方法返回查询结果的下一组行,size 指定返回的行数。如果剩余的行数少于 size,则返回剩余的所有行。

# 查询并获取指定数量的结果  
cursor.execute("SELECT * FROM student")  
rows = cursor.fetchmany(2)  
for row in rows:  print(row)

五、关闭连接

操作完成后,应关闭游标和数据库连接,以释放资源。

# 关闭游标  
cursor.close()  # 关闭数据库连接  
conn.close()

六、注意事项

6.1 SQL 注入

使用 SQL 语句时,应避免将用户输入直接拼接到 SQL 语句中,以防止 SQL 注入攻击。可以通过使用参数化查询来避免这一问题。

6.2 事务管理

对于需要多条 SQL 语句协同完成的操作,应使用事务(Transaction)来保证数据的一致性。在 SQLite 中,可以通过 BEGIN TRANSACTION、COMMIT 和 ROLLBACK 语句来管理事务,但 Python 的 sqlite3 模块在调用 commit() 方法时会自动开始一个新的事务。

6.3 错误处理

在执行 SQL 语句时,可能会遇到各种错误,如语法错误、数据类型不匹配等。因此,在编写代码时,应加入适当的错误处理逻辑,以便在遇到错误时能够给出清晰的提示信息。

七、案例:学生信息管理系统

以下是一个简单的学生信息管理系统案例,展示了如何使用 sqlite3 模块进行数据库操作。

7.1 数据库结构

假设有一个名为 student_management.db 的数据库,其中包含一个名为 student 的表,表结构如下:

CREATE TABLE IF NOT EXISTS student (  id INTEGER PRIMARY KEY AUTOINCREMENT,  name TEXT NOT NULL,  age INTEGER NOT NULL  
);

7.2 功能实现

7.2.1 初始化数据库
def init_db(db_path):  conn = sqlite3.connect(db_path)  cursor = conn.cursor()  create_table_sql = """  CREATE TABLE IF NOT EXISTS student (  id INTEGER PRIMARY KEY AUTOINCREMENT,  name TEXT NOT NULL,  age INTEGER NOT NULL  );  """  cursor.execute(create_table_sql)  conn.commit()  cursor.close()  conn.close()  # 初始化数据库  
init_db('student_management.db')
7.2.2 插入学生信息
def insert_student(db_path, name, age):  conn = sqlite3.connect(db_path)  cursor = conn.cursor()  insert_sql = "INSERT INTO student (name, age) VALUES (?, ?)"  cursor.execute(insert_sql, (name, age))  conn.commit()  cursor.close()  conn.close()  # 插入学生信息  
insert_student('student_management.db', 'David', 21)
7.2.3 查询学生信息
def query_student(db_path, id=None):  conn = sqlite3.connect(db_path)  cursor = conn.cursor()  if id is None:  query_sql = "SELECT * FROM student"  else:  query_sql = "SELECT * FROM student WHERE id = ?"  cursor.execute(query_sql, (id,))  results = cursor.fetchall()  cursor.close()  conn.close()  return results  # 查询所有学生信息  
print(query_student('student_management.db'))  # 查询指定ID的学生信息  
print(query_student('student_management.db', 1))
7.2.4 更新学生信息
def update_student(db_path, id, name=None, age=None):  conn = sqlite3.connect(db_path)  cursor = conn.cursor()  update_sql = "UPDATE student SET "  update_fields = []  params = []  if name is not None:  update_fields.append("name = ?")  params.append(name)  if age is not None:  if update_fields:  update_fields.append("AND age = ?")  else:  update_fields.append("age = ?")  params.append(age)  if not update_fields:  print("No fields to update.")  cursor.close()  conn.close()  return  update_sql += ', '.join(update_fields[:-1])  # Remove the last 'AND'  update_sql = update_sql.rstrip(' AND') + " WHERE id = ?"  params.append(id)  cursor.execute(update_sql, tuple(params))  conn.commit()  cursor.close()  conn.close()  # 更新学生信息  
update_student('student_management.db', 1, name='David Jr.', age=22)
7.2.5 删除学生信息
def delete_student(db_path, id):  conn = sqlite3.connect(db_path)  cursor = conn.cursor()  delete_sql = "DELETE FROM student WHERE id = ?"  cursor.execute(delete_sql, (id,))  conn.commit()  cursor.close()  conn.close()  # 删除学生信息  
delete_student('student_management.db', 2)

八、总结

通过本文,我们详细介绍了如何使用 Python 的 sqlite3 模块进行 SQLite3 数据库的基本操作,包括连接数据库、创建表、插入数据、查询数据、更新数据和删除数据等。同时,我们还通过学生信息管理系统的案例,展示了如何将这些基本操作组合起来,实现一个简单的数据库管理系统。

在实际开发中,SQLite3 由于其轻量级和易于使用的特点,非常适合用于原型开发、小型项目或嵌入式系统。然而,对于需要处理大量数据或高并发访问的应用,可能需要考虑使用更强大的数据库系统,如 MySQL、PostgreSQL 或 MongoDB 等。

希望本文能够帮助你快速入门 SQLite3 和 Python 的 sqlite3 模块,并在你的项目中灵活运用。如果你有任何问题或建议,欢迎随时与我交流。

相关文章:

SQLite3模块使用详解

目录 一、引言 1.1 SQLite3 简介 1.2 Python sqlite3 模块 二、连接数据库 2.1 导入 sqlite3 模块 2.2 连接数据库 2.3 创建游标对象 三、执行 SQL 语句 3.1 创建表 3.2 插入数据 3.3 查询数据 3.4 更新数据 3.5 删除数据 四、处理查询结果 4.1 fetchall() 4.2…...

防火墙详解(三)华为防火墙基础安全策略配置(命令行配置)

实验要求 根据实验要求配置防火墙: 合理部署防火墙安全策略以及安全区域实现内网用户可以访问外网用户,反之不能访问内网用户和外网用户均可以访问公司服务器 实验配置 步骤一:配置各个终端、防火墙端口IP地址 终端以服务器为例&#xff…...

假期学习--iOS中的static关键字

iOS中的static关键字 OC的static关键字 OC也提供了Static关键字,但是这个static关键字不能用于修饰成员变量,也就是说Static是不被允许修饰实例变量,同时Static关键字也不被允许修饰方法。Static关键字可以修饰全局变量,局部变量…...

Maya没有Arnold材质球

MAYA 没有Arnold材质球_哔哩哔哩_bilibili...

面试知识点总结篇三

一、arm中断流程和函数 ARM 中断流程 中断触发保存上下文中断向量表执行ISR - 清除中断标志恢复上下文返回中断 二、STM32任务间通信有哪些方式 消息队列、 信号量、共享内存、任务通知 三、uboot内存没驱动之前是怎么操作的 硬件初始化内存检测设置内存映射控制台初始化…...

数据加密标准(DES)详解:原理、步骤及Python实现

💝💝💝欢迎莅临我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:「storm…...

每日OJ_牛客_OR59字符串中找出连续最长的数字串_双指针_C++_Java

目录 牛客_OR59字符串中找出连续最长的数字串 题目解析 C代码1 C代码2 C代码3 Java代码 牛客_OR59字符串中找出连续最长的数字串 字符串中找出连续最长的数字串_牛客题霸_牛客网 题目解析 双指针: 遍历整个字符串,遇到数字的时候,用双…...

虚幻引擎UE5如何云渲染,教程来了

​步骤一:获取云渲染权限 访问渲染101官网,使用云渲码6666进行注册。 下载并安装渲染客户端。 步骤二:设置渲染环境 确保云渲染环境与您的本地环境一致,避免出错。 步骤三:任务提交 完成环境配置后,解析…...

使用Python实现图形学光照和着色的光线追踪算法

目录 使用Python实现图形学光照和着色的光线追踪算法引言1. 光线追踪算法概述2. Python实现光线追踪算法2.1 向量类2.2 光源类2.3 材质类2.4 物体类2.5 光线追踪器类2.6 使用示例 3. 实例分析4. 光线追踪算法的优缺点4.1 优点4.2 缺点 5. 改进方向6. 应用场景结论 使用Python实…...

通过openAI的Chat Completions API实现一个支持追问的ChatGPT功能集成

文章目录 前言准备工作代码实现思路完整代码实现备注前言 本文介绍如何通过openAI的Chat Completions API实现一个支持追问的后台功能,追问打个比方,就是当你问了一句”窗前明月光的下一句是什么?“之后,想再往下问就可以直接问”再下一句呢?“,模型也能基于上下文理解你…...

8,STM32CubeMX配置SPI工程(读取norflash的ID)

1,前言 单片机型号:STM32F407 编程环境 :STM32CubeMX Keil v5 硬件连接 :SPI1,CS/SS--->PB14 注:本工程在1,STM32CubeMX工程基础(配置Debug、时钟树)基础上完…...

【MATLAB源码-第178期】基于matlab的8PSK调制解调系统频偏估计及补偿算法仿真,对比补偿前后的星座图误码率。

操作环境: MATLAB 2022a 1、算法描述 在通信系统中,频率偏移是一种常见的问题,它会导致接收到的信号频率与发送信号的频率不完全匹配,进而影响通信质量。在调制技术中,QPSK(Quadrature Phase Shift Keyi…...

AIGC学习笔记—minimind详解+训练+推理

前言 这个开源项目是带我的一个导师,推荐我看的,记录一下整个过程,总结一下收获。这个项目的slogan是“大道至简”,确实很简。作者说是这个项目为了帮助初学者快速入门大语言模型(LLM),通过从零…...

计算机毕业设计 在线项目管理与任务分配系统的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍:✌从事软件开发10年之余,专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ 🍅文末获取源码联系🍅 👇🏻 精…...

小程序用户截屏事件

原生小程序: wx.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值,范围 0~1,0 最暗,1 最亮 uniapp: uni.setScreenBrightness({value: 0.5 }); 参数值: value屏幕亮度值&a…...

HashMap为什么线程不安全?如何实现线程安全

HashMap线程不安全的原因主要可以从以下几个方面解释: 1. 数据覆盖 假设两个线程同时执行put操作,并且它们操作的键产生相同的哈希码,导致它们应该被插入到同一个桶中。以下是可能发生的情况: 线程A读取桶位置为空,准…...

Python爬虫之requests模块(一)

Python爬虫之requests模块(一) 学完urllib之后对爬虫应该有一定的了解了,随后就来学习鼎鼎有名的requests模块吧。 一、requests简介。 1、什么是request模块? requests其实就是py原生的一个基于网络请求的模块,模拟…...

当微服务中调度返回大数据量时如何处理

FeignClient 和 Dubbo 可能不是最佳选择。以下是一些适合处理大数据量的技术和方法: 消息队列 简介:消息队列是一种异步通信方式,用于在不同系统之间传递消息。常见的消息队列包括 RabbitMQ、Kafka、ActiveMQ 等。 优点:消息队列…...

【项目经验分享】深度学习点云算法毕业设计项目案例定制

以下是深度学习与点云算法相关的毕业设计项目案例,涵盖了点云数据的分类、分割、重建、配准、目标检测等多个领域,适用于智能驾驶、机器人导航、3D建模等多个应用场景: 案例截图: 基于PointNet的3D点云分类与分割PointNet在大规…...

【Redis 源码】2项目结构说明

1 文件目录结构 deps 这个目录主要包含 Redis 所依赖的第三方代码库。 Jemalloc,内存分配器,默认情况下选择该内存分配器来代替 Linux 系统的 libc-malloc,libc-malloc 性能不高,且碎片化严重。hiredis,这是官方 C 语…...

RP2040 C SDK GPIO和IRQ 唤醒功能使用

RP2040 C SDK GPIO和中断功能使用 SIO介绍 手册27页: The Single-cycle IO block (SIO) contains several peripherals that require low-latency, deterministic access from the processors. It is accessed via each processor’s IOPORT: this is an auxiliary…...

@Transactional导致数据库连接数不够

在Spring中进行事务管理非常简单,只需要在方法上加上注解Transactional,Spring就可以自动帮我们进行事务的开启、提交、回滚操作。甚至很多人心里已经将Spring事务Transactional划上了等号,只要有数据库相关操作就直接给方法加上Transactiona…...

python3中的string 和bytes有什么区别

在Python中,string(字符串)和bytes(字节序列)是两种不同的数据类型,分别用于表示文本和二进制数据。它们的主要区别在于存储的数据类型、编码方式以及使用场景。 1. 存储数据类型 string (字符串,str):用来表示文本数据。string是一个Unicode字符串,其中的每个字符是…...

C~排序算法

在C/C中,有多种排序算法可供选择,每种算法都有其特定的应用场景和特点。下面介绍几种常用的排序算法,包括冒泡排序、选择排序、插入排序、快速排序、归并排序和堆排序,并给出相应的示例代码和解释。 冒泡排序(Bubble …...

基于github创建个人主页

基于github创建个人主页 站在巨人的肩膀上,首先选一个创建主页的仓库进行fork,具体可以参照这篇文章https://blog.csdn.net/qd1813100174/article/details/128604858主要总结下需要修改的地方: 1)仓库名字要和github的名字一致&a…...

apt update时出现证书相关问题,可以关闭apt验证

vi /etc/apt/apt.conf.d/99disable-signature-verification 添加以下内容: Acquire::AllowInsecureRepositories "true"; Acquire::AllowDowngradeToInsecureRepositories "true"; Acquire::AllowUnauthenticated "true"; 参考链…...

进阶数据库系列(十三):PostgreSQL 分区分表

概述 在组件开发迭代的过程中,随着使用时间的增加,数据库中的数据量也不断增加,因此数据库查询越来越慢。 通常加速数据库的方法很多,如添加特定的索引,将日志目录换到单独的磁盘分区,调整数据库引擎的参…...

翻译:Recent Event Camera Innovations: A Survey

摘要 基于事件的视觉受到人类视觉系统的启发,提供了变革性的功能,例如低延迟、高动态范围和降低功耗。本文对事件相机进行了全面的调查,并追溯了事件相机的发展历程。它介绍了事件相机的基本原理,将其与传统的帧相机进行了比较&am…...

车载诊断技术:汽车健康的守护者

一、车载诊断技术的发展历程 从最初简单的硬件设备到如今智能化、网络化的系统,车载诊断技术不断演进,为汽车安全和性能提供保障。 早期的汽车诊断检测技术处于比较原始的状态,主要依靠操作经验和主观评价。随着汽车工业的发展,车载诊断技术也经历了不同的阶段。20 世纪初…...

“天翼云息壤杯”高校AI大赛开启:国云的一场“造林”计划

文 | 智能相对论 作者 | 叶远风 2024年年初《政府工作报告》中明确提到了“人工智能”行动,人工智能的发展被提到前所未有的高度。 如何落实AI在数字经济发展中引擎作用,是业界当下面临的课题。 9月25日,“2024年中国国际信息通信展览会”…...