13.1.3 连接和游标
要使用底层的数据库系统,必须先连接到它,为此可使用名称贴切的函数connect。这个函数接受多个参数,具体是哪些取决于要使用的数据库。作为指南, DB API定义了表13-3所示的参数。推荐将这些参数定义为关键字参数,并按表13-3所示的顺序排列。这些参数都应该是字符串。
表13-3 函数connect的常用参数
参 数 名 描 述 是否可选
dsn 数据源名称,具体含义随数据库而异 否
user 用户名 是
password 用户密码 是
host 主机名 是
database 数据库名称 是
13.2.1节和第26章提供了函数connect的具体使用示例。
函数connect返回一个连接对象,表示当前到数据库的会话。连接对象支持表13-4所示的方法。
表13-4 连接对象的方法
方 法 名 描 述
close() 关闭连接对象。之后,连接对象及其游标将不可用
commit() 提交未提交的事务——如果支持的话;否则什么都不做
rollback() 回滚未提交的事务(可能不可用)
cursor() 返回连接的游标对象
方法rollback可能不可用,因为并非所有的数据库都支持事务(事务其实就是一系列操作)。可用时,这个方法撤销所有未提交的事务。
方法commit总是可用的,但如果数据库不支持事务,这个方法就什么都不做。关闭连接时,如果还有未提交的事务,将隐式地回滚它们——但仅当数据库支持回滚时才如此!如果你不想依赖于这一点,应在关闭连接前提交。只要提交了所有的事务,就无需操心关闭连接的事情,因为作为垃圾被收集时,连接会自动关闭。然而,为安全起见,还是调用close吧,因为这样做不需要长时间敲击键盘。
说到方法cursor,就必须说说另一个主题:游标对象。你使用游标来执行SQL查询和查看结果。游标支持的方法比连接多,在程序中的地位也可能重要得多。表13-5概述了游标的方法,而表13-6概述了游标的属性。
表13-5 游标对象的方法
名 称 描 述
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]) 为取回大量数据而设置缓冲区长度
表13-6 游标对象的属性
名 称 描 述
description 由结果列描述组成的序列(只读)
rowcount 结果包含的行数(只读)
arraysize fetchmany返回的行数,默认为1
有些方法将在本章后面详细讨论,还有一些(如setinputsizes和setoutputsizes)则不会讨论。有关这些方法的详细信息,请参阅前面提到的PEP。
领取专属 10元无门槛券
私享最新 技术干货