数据库支持

Python数据库API

  1. 全局变量

Python DB API的模块属性

变量名

描述

apilevel

使用的Python DB API版本

threadsafety

模块的线程安全程度如何

paramstyle

在SQL查询中使用哪种参数风格

  • apilevel 1.0,2.0
  • threadsafety 0~3 0表示线程不能共享模块,而3表示模块是绝对线程安全的。1表示线程可共享模块本身,但不能共享连接(参见13.1.3节),而2表示线程可共享模块和连接,但不能共享游标。
  • paramstyle 'format’表示标准字符串格式设置方式(使用基本的格式编码),如在要插入参数的地方插入%s。'pyformat’表示扩展的格式编码,即旧式字典插入使用的格式编码,如%(foo)s。还有三种指定待插入字段的方式:'qmark’表示使用问号,'numeric’表示使用:1和:2这样的形式表示字段(其中的数字是参数的编号),而’named表示使用:foobar这样的形式表示字段(其中foobar为参数名)。
  1. 异常

Python DB API指定的异常

异常

超类

描述

StandardError

所有异常的超类

Warning

StandardError

发生非致命问题时引发

Error

StandardError

所有错误条件的超类

InterfaceError

Error

与接口(而不是数据库)相关的错误

DatabaseError

Error

与数据库相关的错误的超类

DataError

DatabaseError

与数据相关的问题,如值不在合法的范围内

OperationalError

DatabaseError

数据库操作内部的错误

IntegrityError

DatabaseError

关系完整性遭到破坏,如键未通过检查

InternalError

DatabaseError

数据库内部的错误,如游标无效

ProgrammingError

DatabaseError

用户编程错误,如未找到数据库表

NotSupportedError

DatabaseError

请求不支持的功能,如回滚

  1. 连接和游标

函数connect的常用参数

参数名

描述

是否可选

dsn

数据源名称,具体含义随数据库而异


user

用户名


password

用户密码


host

主机名


database

数据库名称


连接对象的方法

参数名

描述

close()

关闭连接对象。之后,连接对象及其游标将不可用

commit()

提交未提交的事务——如果支持的话;否则什么都不做

rollback()

回滚未提交的事务(可能不可用)

cursor()

返回连接的游标对象

游标对象的方法

名称

描述

callproc(name[, params])

使用指定的参数调用指定的数据库过程(可选)

close()

关闭游标。关闭后游标不可用

execute(oper[, params])

执行一个SQL操作——可能指定参数

executemany(oper, pseq)

执行指定的SQL操作多次,每次都序列中的一组参数

fetchone()

以序列的方式取回查询结果中的下一行;如果没有更多的行,就返回None

fetchmany([size])

取回查询结果中的多行,其中参数size的值默认为arraysize

fetchall()

以序列的序列的方式取回余下的所有行

nextset()

跳到下一个结果集,这个方法是可选的

setinputsizes(sizes)

用于为参数预定义内存区域

setoutputsize(size[, col])

为取回大量数据而设置缓冲区长度

游标对象的属性

名称

描述

description

由结果列描述组成的序列(只读)

rowcount

结果包含的行数(只读)

arraysize

fetchmany返回的行数,默认为1

  1. 类型

DB API构造函数和特殊值

名称

描述

Date(year, month, day)

创建包含日期值的对象

Time(hour, minute, second)

创建包含时间值的对象

Timestamp(y, mon, d, h, min, s)

创建包含时间戳的对象

DateFromTicks(ticks)

根据从新纪元开始过去的秒数创建包含日期值的对象

TimeFromTicks(ticks)

根据从新纪元开始过去的秒数创建包含时间值的对象

imestampFromTicks(ticks)

根据从新纪元开始过去的秒数创建包含时间戳的对象

Binary(string)

创建包含二进制字符串值的对象

STRING

描述基于字符串的列(如CHAR)

BINARY

描述二进制列(如LONG或RAW)

NUMBER

描述数字列

DATETIME

描述日期/时间列

ROWID

描述行ID列

小结

Python DB API:这个API定义了一个简单的标准化接口,所有数据库包装器模块都必须遵循它,这让编写使用多个不同数据库的程序更容易。

连接:连接对象表示到SQL数据库的通信链路,使用方法cursor可从连接获得游标。你还可使用连接对象来提交或回滚事务。使用完数据库后,就可将连接关闭了。

游标:游标用于执行查询和查看结果。可逐行取回查询结果,也可一次取回很多(或全部)行。

类型和特殊值:DB API指定了一组构造函数和特殊值的名称。构造函数用于处理日期和时间对象,还有二进制数据对象;而特殊值用于表示关系型数据库的类型,如STRING、NUMBER和DATETIME。

SQLite:这是一个小型的嵌入式SQL数据库,标准Python发行版中包含其Python包装器,即模块sqlite3。这个数据库速度快、易于使用,且不要求搭建专门的服务器。