使用Python操作数据库
程序运行的时候,数据都是在内存中的。当程序终止的时候,通常都需要将数据保存到磁盘上。为了便于程序保存和读取数据,并能直接通过条件快速查询到指定的数据,就出现了数据库(Database)这种专门用于集中存储和查询的软件
数据库编程接口
连接对象
数据库连接对象(Connection Object)主要提供获取数据库游标对象和提交/回滚事务的方法,以及如何关闭数据库连接
如何获取连接对象呢?这就需要使用 connect() 函数。该函数有多个参数,具体使用哪个参数,取决于使用的数据库类型。
例如,需要访问 Oracle 数据库和 Mysql 数据库,必须同时下载 Oracle 和 Mysql 数据库模块。
这些模块在获取连接对象时,都需要使用 connect() 函数
connect() 函数常用的参数及说明
参数 | 说明 |
---|---|
dsn | 数据源名称,给出该参数表示数据库依赖 |
user | 用户名 |
password | 用户密码 |
host | 主机名 |
database | 数据库名称 |
例如,使用 PyMySQL 模块连接 MySQL 数据库
1 2 3 4 5 6 7 |
|
上述代码中,pymysql.connect() 方法使用的参数与表中并不是完全相同。在使用时,要以具体的数据库模块为准
connect() 函数返回连接对象,这个对象表示目前和数据库的会话。连接对象支持的方法如表
方法名 | 说明 |
---|---|
close() | 关闭数据库连接 |
commit() | 提交事务 |
rollback() | 回滚事务 |
cursor() | 获取游标对象,操作数据库,如执行 DML 操作,调用存储过程等 |
事务主要用于处理数据量大、复杂度高的数据。如果操作的是一系列的动作,比如张三给李四转账,有如下两个操作:
张三账户金额减少
李四账户金额增加
这时使用事务可以维护数据库的完整性,保证 2 个操作要么全部执行,要么全部不执行
游标对象
游标对象(Cursor Object)代表数据库中的游标,用于指示抓取数据操作的上下文。 主要提供执行 SQL 语句、调用存储过程、获取查询结果等方法
通过使用连接对象的 cursor() 方法,可以获取到游标对象。游标对象的属性如下所示:
description: 数据库列类型和值的描述信息
rowcount: 返回结果的行数统计信息,如 SELECT,UPDATE,CALLPROC 等
游标对象的方法如表所示
方法名 | 说明 |
---|---|
callproc(procname,[, parameters]) | 调用存储过程,需要数据库支持 |
close() | 关闭当前游标 |
execute(operation[, parameters]) | 执行数据库操作,SQL 语句或者数据库命令 |
executemany(operation, seq_of_params) | 用于批量操作,如批量更新 |
fetchone() | 获取查询结果集中的下一条记录 |
fetchmany(size) | 获取指定数量的记录 |
fetchall() | 获取结果集的所有记录 |
nextset() | 跳至下一个可用的结果集 |
arraysize | 指定使用 fetchamany() 获取的行数,默认为 1 |
setinputsizes(sizes) | 设置在调用 execute*() 方法时分配的内存区域大小 |
setoutputsize(sizes) | 设置列缓冲区大小,对大数据列如 LONGS 和 BLOBS 尤其有用 |