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

sqlite3 python 如何使用

在Python中使用SQLite3数据库进行开发是非常直接且便捷的过程,因为SQLite3是Python标准库的一部分,这意味着你不需要额外安装任何包就可以开始使用它。下面我将详细介绍如何在Python中使用SQLite3模块来进行基本的操作,包括连接数据库、创建表、插入数据、查询数据以及关闭连接等。

导入sqlite3模块

首先,你需要导入sqlite3模块。这个模块提供了与SQLite数据库交互所需的所有功能。由于它是Python的内置模块,所以可以直接导入而无需安装:

import sqlite3

连接到SQLite数据库

接下来,你可以通过调用sqlite3.connect()方法来建立与SQLite数据库的连接。如果你指定的数据库文件不存在,那么它将会被自动创建;如果存在,则会打开现有的数据库。此外,还可以使用:memory:作为参数来创建一个仅存在于内存中的临时数据库:

conn = sqlite3.connect('example.db')  # 创建或打开名为 example.db 的数据库
# 或者
conn = sqlite3.connect(':memory:')    # 创建一个内存中的数据库

创建游标对象

一旦建立了连接,就需要创建一个游标(Cursor)对象。游标用于执行SQL语句,并获取执行结果。创建游标的代码如下所示:

cursor = conn.cursor()

执行SQL命令

有了游标之后,就可以执行各种SQL命令了。例如,创建一个新的表:

cursor.execute('''CREATE TABLE IF NOT EXISTS stocks
             (date text, trans text, symbol text, qty real, price real)''')

这里使用了IF NOT EXISTS子句,以确保只有当表不存在时才会创建新表。

插入数据

要向表中插入数据,可以使用execute()方法并提供相应的SQL插入语句。为了避免SQL注入攻击,推荐使用参数化查询的方式传递值:

cursor.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY','RHAT',100,35.14)")
# 或者使用参数化查询
data = ('2006-03-28', 'BUY', 'IBM', 1000, 45.0)
cursor.execute("INSERT INTO stocks VALUES (?, ?, ?, ?, ?)", data)

对于批量插入多条记录的情况,可以使用executemany()方法,它接受一个包含多个参数元组的列表作为输入:

purchases = [
    ('2006-03-28', 'BUY', 'IBM', 1000, 45.0),
    ('2006-04-05', 'BUY', 'MSFT', 1000, 72.0),
]
cursor.executemany('INSERT INTO stocks VALUES (?,?,?,?,?)', purchases)

查询数据

执行完插入操作后,可以通过SELECT语句来检索数据。可以使用fetchone(), fetchall()或者fetchmany(size)方法从结果集中获取行:

cursor.execute('SELECT * FROM stocks ORDER BY price')
rows = cursor.fetchall()
for row in rows:
    print(row)

提交事务和关闭连接

所有的更改都必须提交到数据库才能生效。如果不希望保存所做的更改,可以选择回滚事务。最后不要忘记关闭游标和连接,以释放资源:

conn.commit()
# 或者
conn.rollback()

cursor.close()
conn.close()

异常处理

为了保证程序的安全性和稳定性,在实际应用中应该总是添加适当的异常处理机制。比如,使用try...except...finally结构来确保即使发生错误也能正确地关闭资源:

try:
    conn = sqlite3.connect('example.db')
    cursor = conn.cursor()
    # 执行SQL语句...
except sqlite3.Error as e:
    print(f"An error occurred: {e}")
finally:
    if cursor:
        cursor.close()
    if conn:
        conn.close()

以上就是Python中使用SQLite3的基本步骤。通过这些简单的API,开发者可以轻松地管理本地存储的数据,同时保持良好的性能和安全性. 如果需要更复杂的数据库操作或是与其他类型的数据库集成,则可能需要考虑其他的ORM框架如SQLAlchemy等工具。不过对于许多小型项目来说,SQLite3已经足够强大并且易于使用了。


http://www.kler.cn/a/458760.html

相关文章:

  • Pytorch | 利用DTA针对CIFAR10上的ResNet分类器进行对抗攻击
  • 太通透了,Android 流程分析 蓝牙enable流程(stack/hidl)
  • vscode 多项目冲突:进行 vscode 工作区配置
  • 单元测试3.0+ @RunWith(JMockit.class)+mock+Expectations
  • 【深度学习基础之多尺度特征提取】图像金字塔(Image Pyramid)是如何在深度学习网络中提取多尺度特征的?附代码
  • 二、SQL语言,《数据库系统概念》,原书第7版
  • 文件上传绕过最新版安全狗
  • Android 屏幕适配autosize
  • springboot514基于SpringBoot的家电销售展示平台(论文+源码)_kaic
  • kkFileView集成springboot:使用自定义预览接口(非minio预览接口),发现无法预览资源
  • nginx 基于 geoip 模块限制地区访问
  • Linux安装Docker完整教程
  • YoloV9改进策略:Head改进|DynamicHead,利用注意力机制统一目标检测头部|即插即用
  • 大模型时代的NL2SQL初探
  • 二战-从头开始
  • 面试知识点汇总_03
  • HarmonyOS Next 应用元服务开发-应用接续动态配置迁移按需迁移页面
  • NVIDIA - 人形机器人扼要
  • tcp_rcv_synsent_state_process函数
  • mysql日志(
  • 全面解析 Linux 系统监控与性能优化
  • Centos常用命令,按功能分类,用户和权限管理等
  • 详解 Python 中的json.loads和json.dumps方法:中英双语
  • 青少年编程与数学 02-005 移动Web编程基础 08课题、过渡动画
  • C++设计模式之行为型模式概述,它们的目的与特点
  • Linux(Centos 7.6)网卡信息没有了问题处理