使用Python操作数据库和使用SQLite创建数据库

使用Python操作数据库

程序运行的时候,数据都是在内存中的。

数据库都提供了标准化接口(API)

定义了Python数据库API接口的各个部分,若模块接口,连接对象,游标对象,类型对象和构造器,DB API的可选扩展以及可选的错误处理机制。

连接对象

数据库连接对象主要提供获取数据库游标对象和提交/回滚事务的方法,以及关闭数据库连接。

使用connect()函数获取连接对象

connectO函数常用的参数及说明

参数 说明
dsn 数据源名称,给出该参数表示数据库依赖 
user 用户名
password 用户密码
host 主机名
database 数据库名称

例如,使用PyMySQL模块连接MySQL数据库,示例代码如下:

conn = pymysql.connect (host='localhost',
user='user',
password='passwd',
db='test',
charset='utf8',
cursorclass=pymysql.cursors.Dictcursor)

在使用时,要以具体的数据库模块为准。

2.连接对象的方法
Connect()函数返回连接对象,这个对象表示目前和数据库的会话。

连接对象支持的方法

方法名 说明
close() 关闭数据库连接 
commit() 提交事务
rollback() 回滚事务
cursor() 获取游标对象,操作数据库,如执行DML操作,调用存储过程等


commit()方法用于提交事务,事务主要用于处理数据量大、复杂度高的数据。如果操作的是一系列的动作,比如张三给李四转账,有如下两个操作:

张三账户金额减少。
·李四账户金额增加。
这时使用事务可以维护数据库的完整性,保证两个操作要么全部执行,要么全部不执行。

游标对象
游标对象(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()  指定使用fetchmany()获取的行数,默认为1
setinputsizes(sizes) 设置在调用execute*()方法时分配的内存区域大小
setoutputsize(sizes) 设置列缓冲区大小,对大数据列如LONGS和BLOBS尤其有用

使用SQLite创建数据库

SQLite不是一个客户端/服务器结构的数据库引擎,而是一种嵌入式数据库,它的数据库本身就是一个文件。SQLite将整个数据库,包括定义,表,索引以及数据本身,作为一个单独的,可跨平台使用的文件存储在主机中。由于SQLite本身是由C语言写的,而且体积小,所以经常被集成到各种应用程序中。Python就内置了SQLite3.所以在Python中使用SQLite3不需要安装任何模块就直接使用。

创建数据库

直接使用import语句导入SQLite3模块。

Python操作数据库的通用流程:开始->创建connection->获取cursor->执行SQL语句->关闭cursor->关闭connection->结束

创建一个mrsoft.db的数据库文件,然后执行SQL语句创建一个user表(用户表), user 表包含id和name两个字段。具体代码如下:

01 import sqlite3
02#连接到SQLite数据库
03 #数据库文件是mrsoft,db,如果文件不存在,会自动在当前目录创建
04 conn = sqlite3.connect('mrsoft.db')
05 #创建一个Cursor
06 cursor = conn.cursor ()
07#执行一条SQL语句,创建user表
08 cursor.execute ('create table user (id int (10) primary key, name varchar (20))') 
09#关闭游标
10 cursor.close ()
11 #关闭Connection
12 conn.close ()



在上述代码中,使用sqlite3.connect()方法连接SQLite数据库文件mrsoft.db.由于mrsoft.db 文件并不存在,所以会在本实例Python代码同级目录下创建mrsoft.db文件,该文件包含了user 表的相关信息

说明:再次运行实例时,会提示错误信息: sqlite3.OperationalError:table user alread exists.
这是因为user表已经存在。
 

新增用户数据信息

cursor.execute('insert into user (id,name) values ("1","MRSOFT")')

你可能感兴趣的:(python,python,数据库,开发语言)