API/SQLite

本文介绍了Python的DB API 2.0规范,包括全局变量apilevel、threadsafety和paramstyle的作用。重点讲解了数据库连接和游标对象的核心方法和属性,以及SQLite数据库的特点,如数据类型转换和宽松的数据类型约束。同时,提到了操作SQLite数据库的基本流程和注意事项,如在fetch所有记录后需要重新执行select查询。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文链接http://c.biancheng.net/python/database/
全局变量

Python 中,任何支持 2.0 版本 DB API 的数据库模块都必须定义 3 个描述模块特性的全局变量。这样做的原因是 API 设计得很灵活,以支持许多不同的底层机制,避免过多包装。

这 3 个全局变量分别是:

  • apilevel:用于显示数据库模块的 API 版本号。对于支持 DB API 2.0 版本的数据库模块来说,该变量值可能是 1.0 或 2.0。如果这个变量不存在,则可能该数据库模块暂时不支持 2.0 版本的 API,读者就应该考虑选择使用支持该数据库的其他数据库模块。

  • threadsafety:指定数据库模块的线程安全等级,该等级值为 0~3 ,其中 3 代表该模块完全是线程安全的;1 表示该模块具有部分线程安全性,线程可以共享该模块,但不能共享连接;0 则表示线程完全不能共享该模块。 3. paramstyle:该全局变量指定当 SQL 语句需要参数时,可以使用哪种风格的参数。该变量可能返回如下变量值:

  • • format:表示在 SQL 语句中使用 Python 标准的格式化字符串代表参数。例如,在程序中需要参数的地方使用
    %s,接下来程序即可为这些参数指定参数值。

    • pyformat:表示在 SQL 语句中使用扩展的格式代码代表参数。比如使用 %(name),这样即可使用包含 key 为 name
    的字典为该参数指定参数值。

    • qmark:表示在 SQL 语句中使用问号(?)代表参数。在 SQL 语句中有几个参数,全部用问号代替。

    • numeric:表示在 SQL 语句中使用数字占位符(:N)代表参数。例如:1 代表一个参数,:2
    也表示一个参数,这些数字相当于参数名,因此它们不一定需要连续。

    • named:表示在 SQL 语句中使用命名占位符(:name)代表参数。例如 :name 代表一个参数,:age 也表示一个参数。

数据库 API 的核心类

遵守 DB API 2.0 协议的数据库模块通常会提供一个 connect() 函数,该函数用于连接数据库,并返回数据库连接对象。
表 1 数据库连接对象的方法和属性

功能描述
cursor()打开游标。
commit()提交事务。
rollback()回滚事务。
close()关闭数据库连接。
isolation_level返回或设置数据库连接中事务的隔离级别。
in_transaction判断当前是否处于事务中。

表 1 中,第一个方法可以返回一个游标对象,游标对象是 Python DB API 的核心对象,该对象主要用于执行各种 SQL 语句,包括 DDL、DML、select 查询语句等。使用游标执行不同的 SQL 语句返回不同的数据。

游标对象通常会具有表 2 所示的方法和属性。
在这里插入图片描述
总结来看,Python 的 DB API 2.0 由一个 connect() 开始,一共涉及数据库连接和游标两个核心 API。它们的分工如下:

• 数据库连接:用于获取游标、控制事务。

• 游标:执行各种 SQL 语句。

操作数据库的基本流程

在这里插入图片描述
在这里插入图片描述
SQLite 内部只支持 NULL、INTEGER、REAL(浮点数)、TEXT(文本)和 BLOB(大二进制对象)这 5 种数据类型,但实际上 SQLite 完全可以接受 varchar(n)、char(n)、decimal(p, s) 等数据类型,只不过 SQLite 会在运算或保存时将它们转换为上面 5 种数据类型中相应的类型。

除此之外,SQLite 还有一个特点,就是它允许把各种类型的数据保存到任何类型的字段中,开发者可以不用关心声明该字段所使用的数据类型。例如,可以把字符串类型的值存入 INTEGER 类型的字段中,也可以把数值类型的值存入布尔类型的字段中……但有一种情况例外,被定义为“INTEGER PRIMARY KEY”的字段只能存储 64 位整数,当使用这种字段保存除整数以外的其他类型的数据时,SQLite 会产生错误。 由于 SQLite 允许在存入数据时忽略底层数据列实际的数据类型,因此在编写建表语句时可以省略各数据列后面的类型声明。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
select查询以后,如果已经fetch所有的记录,需要重新select查询,然后再fetch数据。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
切片[开始:结束:步进] 步进默认为 1
https://blog.youkuaiyun.com/Together_CZ/article/details/79593952
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值