本文是《Python基础教程(第2版 修订版)》第 13 章 数据库支持 的笔记,简要介绍了Python中数据库编程接口的全局变量、异常、连接和游标、类型以及SQLite和PySQLite的使用等内容。
1. The Python Database API
支持标准的数据库有很多,而且多数在中都有对应的客户端模块。
在提供基本功能相同的不同模块之间进行切换时,会遇到接口不同的问题。为了解决各个数据库模块之间的兼容性问题,已通过了一个标准的数据库编程接口。
目前版本定义在中的Python Database API Specification v2.0中。(http://python.org/peps/pep-0249.html)
1.1 Global Variables
任何支持版本的数据库模块都必须定义个描述模块特性的全局变量:
: 字符串常量,所使用的版本。
: 模块的线程安全等级。
: 在查询中使用的参数风格。
线程安全等级是个取值范围为的整数。表示线程完全不共享模块,表示模块是完全线程安全的。表示线程本身是可以共享模块,但不对连接共享。如果不使用多线程,那么就不必担心这个变量。
参数风格表示在执行多次类似查询的时候,参数是如何被拼接到查询中的。
值表示标准的字符串格式化,可以使用基本的格式代码,即可以在参数中进行拼接的地方插入。
值表示扩展的格式代码,用于字典拼接中。
除此之外,还有三种结合方式:表示使用问号,表示使用或者格式的字段,数字表示参数的序号。表示这样的字段,为参数名。
1.2 Exceptions
中定义了一些异常类,以便尽可能进行错误处理。在给定的数据库模块中异常应该是全局可用的。
在中使用的异常:
:所有异常的泛型基类
:超类为。在非致命错误发生时引发。
:超类为。所有错误条件的泛型超类。
:超类为。关于接口而非数据库的错误。
:超类为。与数据库相关的错误的基类。
:超类为。与数据相关的问题,比如值超出范围。
:超类为。数据库内部操作错误。
:超类为。关系完整性受到影响,比如键检查失败。
:超类为。数据库内部错误,比如非法游标。
:超类为。用户编程错误,比如未找到表。
:超类为。请求不支持的特性,比如回滚。
1.3 Connections and Cursors
连接数据库,需要使用函数。常用参数如下:
:不可选。数据库名称,给出该参数表示数据库依赖。
:可选。用户名。
:可选。用户密码。
:可选。主机名。
:可选。数据库名。
函数返回连接对象,即和数据库的会话。连接对象支持的方法如下:
:关闭连接之后,连接对象和它的游标均不可用。
:提交挂起的事务。数据库不支持,则没有任何作用。
:回滚挂起事务。但并不是所有数据库都支持。
:返回连接的游标对象。
如果关闭了连接,但还有未提交的事务,则会隐式地回滚。如果不想完全依赖隐式回滚,那就需要在关闭连接前进行提交。此时连接会在垃圾收集时自动关闭,更安全的操作就是主动调用方法。
游标对象方法。通过游标执行查询并检查结果。游标对象支持的方法:
:使用给定的名称和参数调用已命名的数据库过程。
:关闭游标之后,游标不可用。
:执行一个操作,可能带有参数。
:对序列中的每个参数集执行操作。
:把查询的结果集中的下一行保存为序列或者为。
:获取查询结果集中的多行,默认尺寸为。
:将所有剩余的行作为序列的序列。
:跳到下一个可用的结果集,可选。
:为参数预先定义内存区域。
:为获取的大数据值设定缓冲区尺寸。
游标对象特性:
:结果列描述的序列,只读。
:结果中的行数,只读。
:中返回的行数,默认为。
1.4 Types
定义了用于特殊类型和值的构造函数及常量(单例模式),以便对插入到列中的值的类型做出各种要求和限制。但一些模块并不是完全符合要求,例如模块。
构造函数和特殊值:
:创建保存日期值的对象。
:创建保存时间值的对象。
:创建保存时间戳值的对象。
:创建保存自新纪元以来秒数的对象。
:创建保存来自秒数的时间值的对象。
:创建保存来自秒数的时间戳值的对象。
:创建保存二进制字符串值的对象。
:描述基于字符串的列类型。
:描述二进制列。
:描述数字列。
:描述日期/时间列。
:描述行列
2. SQLite and PySQLite
小型数据库引擎不需要作为独立的服务器运行,也不基于集中式数据库存储机制。而是直接在本地文件上运行。
在每次修改数据库后都应当进行提交,而不是仅在准备关闭时。
领取专属 10元无门槛券
私享最新 技术干货