首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

14.Database Support BeginPython笔记

本文是《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

小型数据库引擎不需要作为独立的服务器运行,也不基于集中式数据库存储机制。而是直接在本地文件上运行。

在每次修改数据库后都应当进行提交,而不是仅在准备关闭时。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190121G1E9GL00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券