每一种语言都少不了多数据库进行各种操作。
python支持多种数据库。有关python支持的数据库清单,请参阅:https://wiki.python.org/moin/DatabaseInterfaces
1 全局变量
所有与DB API2.0兼容的数据库模块都必须包含三个全局变量,它们描述了模块的特征。这样设计,是的API设计更加灵活,无需进行太多包装就能配合多种不同的底层机制使用。
变量 apilevel :使用的Python DB API版本,如果没有这个变量,就说明模块不予DB API 2.0兼容。
变量 threadsafety :模块的线程安全程度。该值是一个0~3 ( 含 )的整数。0表示线程不能共享模块,3表示模块是绝对线程安全的。1表示线程可共享模块本身,但不能共享连接,2表示可以共享模块和连接,但不能共享游标。
变量 paramstyle :在SQL查询中使用哪种参数风格。
'format'表示标准的字符串格式化,如要在参数中进行拼接的地方插入%s。
'pyformat'表示扩展的格式代码,即旧式字典插入,比如%(foo)s。
'qmark'使用问号。
'numeric'使用 :1 和 :2 这样形式表示字段(数字表示参数的编号)。
'named'表示foobar这样的字段,其中foobar为参数名。
2 异常
DB API 定义了多种异常,让你能够细致的处理错误。如:
StandardError:所有异常的超类
Warning:所有非致命问题时引发
Error:所有错误条件的超类
InterfaceError:与接口相关的错误
DatabaseError:与数据库相关的错误的超类
DataError:与数据库相关的问题,如值不在合法的访问内
OperationalError:数据库操作内部的错误
3 连接和游标
要使用底层的数据库系统,必须使用函数connect进行连接。函数connect的常用参数如下:
参数名 描述 是否可选
dsn 数据库名称,具体含义随数据库而异 否
user 用户名 是
password 密码 是
host 主机名 是
port 端口号 是
database 数据库名称 是
函数connect返回一个连接对象,表示当前到数据库的会话。连接对象支持如下方法:
close():关闭连接对象。
commit():提交未提交的事务----如果支持的话;否则什么都不做
rollback():回滚为提交的事务(可能不可用)
cursor():返回连接的游标对象
方法cursor返回一个游标对象,可以使用该对象来执行SQL查询和查看结果。游标对象的方法如下:
callproc(name,[, params]) 使用指定的参数调用指定的数据库过程(可选)
close() 关闭游标
execute(oper[, params]) 执行一个SQL操作-----可指定参数
executemany(oper, pseq) 执行执行的SQL操作多次,每次都取序列pseq中的一组参数
fetchone() 以序列的方式取回查询结婚中的下一行;如果没有更多的行,返回None
fetchmany([size]) 取回查询结果中的多行,其中参数size的值默认为arraysize
fetchall() 以序列的方式取回余下的所有行
nextset() 跳到下一个结果集,这个方法是可选的
setinputsizes(sizes) 用于为参数预定义内存区域
setoutputsize(size[, col]) 为取回大量数据而设置缓冲区长度
4 类型
对于插入到某些类型的列中的值,DB API 定义了一些构造函数和常量,用于提供特殊的类型和值。
名称 描述
Date(year, month, day) 创建包含日期值的对象
Time(hour, minute, second) 创建包含时间值的对象
Timestamp(year, mon, day, h, min, s)创建包含时间戳的对象
DateFromTicks(ticks) 根据从新纪元开始过去的秒数创建包含日期值的对象
TimeFromTicks(ticks) 根据从新纪元开始过去的秒数创建包含时间值的对象
imestampFromTicks(ticks) 根据从新纪元开始过去的秒数创建包含时间戳的对象
Binary(string) 创建包含二进制字符串值得对象
STRING 描述基于字符串的列(如CHAR)
BINARY 描述二进制列(如LONG、RAW)
NUMBER 描述数字列
DATETIME 描述日期/时间列
ROWID 描述行ID列
5 操作数据库
要是用Python来操作数据库,一般分为下面几个步骤:
1.导入相应的数据库模块。
2.使用connect连接数据库。
3.获取操作游标。
4.使用游标执行增删改查(CRUD)语句。
5.可能还需要提交事务,使用commit方法。
6.关闭连接close。