GUI部分暂时跳过,数据库主要学习sqlite。
python DB API
异常
异常 | 超类 | 描述 |
---|---|---|
StandardError | 所有异常的超类 | |
Warning | StandardError | 发生非致命问题引发 |
Error | StandardError | 所有错误条件的超类 |
InterfaceError | Error | 与接口(而不是数据库)相关的错误 |
DatabaseError | Error | 与数据库相关错误的超类 |
DataError | DatabaseError | |
OperationError | DatabaseError | 与数据相关的问题,如值不再合法范围 |
IntegrityError | DatabaseError | 数据库操作内部的错误 |
InternalError | DatabaseError | 关系完整性遭到破坏,如键未通过检查 |
ProgrammingError | DatabaseError | 用户编程错误,如未找到数据库表 |
NotSupportedError | DatabaseError | 请求不支持的功能,如回滚 |
connect()
connect用于连接数据库,返回一个连接对象
参数名 | 描述 | 是否可选 |
---|---|---|
dsn | 数据源名称,随数据库而异 | 否 |
user | 用户名 | 是 |
password | 密码 | 是 |
host | 主机名 | 是 |
database | 数据库名称 | 是 |
连接对象支持以下方法:
方法名 | 描述 |
---|---|
close() | 关闭连接对象 |
commit() | 提交修改(不支持什么也不做) |
rollback() | 回滚未提交(可能不可用) |
cursor() | 返回连接的游标对象 |
游标对象的方法:
方法名 | 描述 |
---|---|
close() | 关闭此游标对象 |
fetchone() | 得到结果集的下一行,没有返回None |
fetchmany([size = cursor.arraysize]) | 得到结果集的下多行 |
fetchall() | 得到结果集中剩下的所有行 |
excute(oper[, params]) | 执行一个数据库操作 |
excutemany(oper, pesq) | 执行多个数据库操作 |
setinputsizes(sizes) | 用于为参数预定义内存区域 |
setoutputsize(size[,col]) | 为取回大量数据而设置缓冲区长度 |
游标对象的属性:
属性 | 描述 |
---|---|
description | 由结果列描述组成的序列 |
arraysize | 使用fetchmany()方法一次取出行数,默认为1 |
rowcount | fetvhmany返回的行数,默认为1 |
类型
名称 | 描述 |
---|---|
Date(year,month,day) | 创建包含日期值的对象 |
Time(hour,mintue,second) | 创建包含时间值的对象 |
Timestamp(y,mon,d,h,min,s) | 创建包含时间戳的对象 |
Binart(string) | 创建包含二进制字符串的列 |
STRING | 描述基于字符串的列 |
BINARY | 描述二进制列 |
NUMBER | 描述数字列 |
DATETIME | 描述日期/时间列 |
ROWID | 描述行ID列 |
sqlite
sqlite是一种轻量级的数据库,由单个文件构成,无需服务端。
import sqlite3
con = sqlite3.connect('test.db') #不存在自动创建
curs = con.cursor() #这个游标用于执行sql查询
curs.exctue('''
A sql
''')#执行sql语句
con.commit() #用于提交修改,最好一次修改过后马上提交,不要关闭连接前提交
con.close() #关闭连接
使用executemany插入大批量数据速度会明显提升。