数据库支持
python数据库API
支持sql标准的可用数据库有很多,其中多数在python中都有对应的客户端模块。
全局变量
python DB API的模块特性
变量名 |
用途 |
apilevel |
所使用的python db api版本 |
threadsafety |
模块的线程安全等级 |
paramstyle |
在sql查询中使用的参数风格 |
异常
异常 |
超类 |
描述 |
StandardError |
|
所有异常的泛型基类 |
Warning |
StandardError |
在非致命错误发生时引发 |
Error |
StandardError |
所有错误条件的泛型超类 |
InterfaceError |
Error |
关于接口而非数据库的错误 |
DatabaseError |
Error |
与数据库相关的错误的基类 |
DataError |
DatabaseError |
与数据库相关的问题,比如值超出范围 |
OperationalError |
DatabaseError |
数据库内部操作错误 |
IntegrityError |
DatabaseError |
关系完整性受到影响,比如键检查失败 |
InternalError |
DatabaseError |
数据库内部错误,比如非法游标 |
ProgrammingError |
DatabaseError |
用户编译错误,比如未找到表 |
NotSupportedError |
DatabaseError |
请求不支持的特性(比如回滚) |
为了使用基础数据库系统,首先必须连接到它。需要使用具有恰当名称的connect函数,该函数有多个参数,而具体使用哪个参数取决于数据库。
connect函数是常用参数
参数 |
描述 |
是否可选 |
dsn |
数据源名称,给出该参数表示数据库依赖 |
否 |
user |
用户名 |
是 |
password |
用户密码 |
是 |
host |
主机名 |
是 |
database |
数据库名 |
是 |
连接对象方法
方法名 |
描述 |
close() |
关闭连接之后,连接对象和它的游标均不可用 |
commit() |
如果支持的话就提交挂起的事务,否则不做任何事 |
rollback() |
回滚挂起的事务(可能不可用) |
cursor() |
返回连接的游标对象 |
rollback方法可能不可用,因为不是所有的数据库都支持事务。
commit方法总是可用,但如果数据库不支持事务,它就没有任何作用。如果关闭了连接,但还有未提交的事务,它们会隐式地回滚——但只有在数据库支持回滚的时候才可以。
cursor方法引入另外一个主题:游标对象。通过游标执行sql查询并检查结果,游标比连接支持更多的方法,而且可能在程序中更好用。
游标对象方法
名称 |
描述 |
callproc(name[,params]) |
使用给定的名称和参数(可选)调用已命名的数据库程序 |
close() |
关闭游标之后,游标不可用 |
execute(oper[,params]) |
执行sql操作,可能使用参数 |
execute(oper,pseq) |
对序列中的每个参数执行sql操作 |
fetchone() |
把查询的结果集中的下一行保存为序列或者None |
fetchmany([size]) |
获取查询结果集中的多行,默认尺寸为arraysize |
fetchall() |
将所有(剩余)的行作为序列的序列 |
nextset() |
跳至下一个可用的结果集(可选) |
setinputsizes(sizes) |
为参数预先定义内存区域 |
setoutputsize(size[,col]) |
为获取的大数据值设定缓冲区尺寸 |
游标对象特性
名称 |
描述 |
description |
结果列描述的序列,只读 |
rowcount |
结果中的行数,只读 |
arraysize |
fetchmany中返回的行数,默认为1 |
类型
数据库对插入到具有某种类型的列中的值有不同的要求,是为了能正确地与基础sql数据库进行交互操作,DB API定义了用于特殊类型和值的构造函数及常量(单例模式)。
DB API构造函数和特殊值
名称 |
描述 |
Date(year,month,day) |
创建保存日期值的对象 |
Time(hour,minute,second) |
创建保存时间值的对象 |
Timestamp(y,mon,d,h,min,s) |
创建保存时间戳值的对象 |
DateFromTicks(ticks) |
创建保存来自新纪元以来秒数的对象 |
TimeFromTicks(ticks) |
创建保存来自秒数的时间值的对象 |
TimestampFromTicks(ticks) |
创建保存来自秒数的时间戳值的对象 |
Binary(string) |
创建保存二进制字符串值的对象 |
STRING |
描述基于字符串的列类型 |
BINARY |
描述二进制列 |
NUMBER |
描述数字列 |
DATETIME |
描述日期/时间列 |
ROWID |
描述行ID列 |