首页 > Python操作数据库
阅读数:29
Python数据库接口(API)用法详解
Python 在连接及操作数据库方面,仍然表现出简单性、规范性和易操作性。在 Python Database API(PEP249) 中,定义了 Python 操作数据库需要遵守的规范,在规范中指定了模块接口、连接对象、游标对象、类对象、错误处理机制等。
由此可见,Python 在应用场景上具有很大的空间。下面重点介绍连接对象和游标对象。
该函数的基本参数如下。
此外,在建立数据库连接时,其他的函数还有如下几个:
例如,可以使用以下语句连接 MySQL 数据库。
由 commit( ) 和 rollback( ) 函数可以知道,Python 是支持事务操作编程语言。所谓事务,就是一系列有序数据操作的动作的集合,通过事务保障了数据的一致性和有效性,当且仅当所有数据操作返回都正确时,数据才会被更新到物理数据库中;否则,通过 rollback( ) 函数取消这一组数据操作。
使用 cursor( ) 函数获取游标对象,主要包括如下方法:
Python通用接口(API)
大多数数据库都是支持 ODBC 和 ADO 的,Python 为此提供了有关的 ODBC 和 ADO 模块进行支持。目前,Python 可以方便地支持关系型数据库如 DB2、InFormix、MySQL、MsSQL、MsSQL、Access、Sybase,以及非关系型数据库如 XML、MetaKit、Durus 等的访问操作,支持嵌入式数据库 SQLite、ThinkSQL,支持数据仓库系统 IBM Netezza 等。由此可见,Python 在应用场景上具有很大的空间。下面重点介绍连接对象和游标对象。
Python连接对象和游标对象
1) 连接对象
连接对象(Connection Object)主要用来管理数据库连接及关闭连接的对象。通过使用函数 connect( ) 获取连接对象,该函数具有多个参数,并且根据不同的数据库类型而有所不同。比如,需要访问 SQLite 和 MsSQL 数据库,则需要分别下载 SQLite 数据库模块和 MsSQL 数据库模块。connect( ) 函数的常用参数包括数据源名称、用户名称、用户密码、主机名及数据库名称等。该函数的基本参数如下。
- host:主机名;
- user:用户名称;
- password:用户密码;
- database:数据库名称。
此外,在建立数据库连接时,其他的函数还有如下几个:
- close():关闭数据库连接对象;
- commit():提交事务;
- rollback():回滚事务;
- cursor():在连接对象上创建游标对象。
例如,可以使用以下语句连接 MySQL 数据库。
Connmysql=pymysql.connect( host='localhost', user='root', password='root' db='test', cursorclass=pymysql.cursors.DictCursor )在上述代码中,通过 connect( ) 函数连接到 test 数据库。
由 commit( ) 和 rollback( ) 函数可以知道,Python 是支持事务操作编程语言。所谓事务,就是一系列有序数据操作的动作的集合,通过事务保障了数据的一致性和有效性,当且仅当所有数据操作返回都正确时,数据才会被更新到物理数据库中;否则,通过 rollback( ) 函数取消这一组数据操作。
2) 游标对象
游标是处理数据的一种方法,可以方便地查看和处理结果集中的数据,并且提供了向前、向后浏览数据的能力,类似于 C语言中的指针,可以定位到结果集的任何位置。Python 中的游标也基于这种思想,并对其进行了扩展,不仅可以用于操作数据结果集,而且可以用于向数据库提交查询语句和调用存储过程。使用 cursor( ) 函数获取游标对象,主要包括如下方法:
- close():关闭此游标对象。
- fetchone():得到结果集的下一行。
- fetchmany([size=cursor.arraysize]):得到结果集的下几行。
- fetchall():得到结果集中剩下的所有行。
- excute(sql[,args]):执行一个数据库查询或命令。
- excutemany(sql,args):执行多个数据库查询或命令。
- callproc(procname,args):调用存储过程。
- arraysize:获取 fetchmany() 结果集行数,默认为 1。
- description:返回当前结果集的列名信息。
- rowcount:返回查询结果行数,没有结果集时用 -1 标识。
- nextset:跳到下一个结果集。
说明:数据库编程接口和 API 对大多数数据库操作是可用的,但应该针对所操作的数据库查看其相关的帮助文档。