一、数据库API(DB API)
1.这 3 个全局变量分别是:
apilevel:用于显示数据库模块的 API 版本号。
threadsafety:指定数据库模块的线程安全等级,该等级值为 0~3
paramstyle:该全局变量指定当 SQL 语句需要参数时,可以使用哪种风格的参数。
2.数据库 API 的核心类
3.操作数据库的基本流程
二、 SQLite创建数据表
数据库模式定义语言DDL:(创建表、修改表或删除表)
三、 DML(数据库操纵语言)
# 导入访问SQLite的模块
import sqlite3
# ①、打开或创建数据库
# 也可以使用特殊名::memory:代表创建内存中的数据库
conn = sqlite3.connect('first.db')
# ②、获取游标
c = conn.cursor()
# ③、调用executemany()方法把同一条SQL语句执行多次
c.executemany('insert into user_tb values(null, ?, ?, ?)',
(('sun', '123456', 'male'),
('bai', '123456', 'female'),
('zhu', '123456', 'male'),
('niu', '123456', 'male'),
('tang', '123456', 'male')))
conn.commit()
# ④、关闭游标
c.close()
# ⑤、关闭连接
conn.close()
===================================================================
c.executemany('insert into user_tb values(null, ?, ?, ?)',
(('sun', '123456', 'male'),
('bai', '123456', 'female'),
('zhu', '123456', 'male'),
('niu', '123456', 'male'),
('tang', '123456', 'male')))
上面代码调用 executemany() 方法执行一条 insert 语句,但调用该方法的第二个参数是一个元组,该元组的每个元素都代表执行该 insert 语句一次,在执行 insert 语句时这些元素负责为该语句中的“?”占位符赋值。
c.executemany(‘update user_tb set name=? where _id=?’,
((‘小孙’, 2),
(‘小白’, 3),
(‘小猪’, 4),
(‘小牛’, 5),
(‘小唐’, 6)))
四、fetchone()、fetchmany()和fetchall()用法
由于 select 语句执行完成后可以得到查询结果,因此程序可通过游标的 fetchone()、fetchmany(n)、fetchall() 来获取查询结果。
运行上面程序,可以看到如下运行结果:
_id name pass gender
--------------------------------
(3, 'bai', '123456', 'female')
bai-->123456
(4, 'zhu', '123456', 'male')
zhu-->123456
(5, 'niu', '123456', 'male')
niu-->123456
(6, 'tang', '123456', 'male')
tang-->123456
上面程序使用 fetchone() 方法每次获取一条记录,这是比较常见的做法。实际上,程序也可以使用 fetchmany(n) 或 fetchall() 方法一次获取多条记录。
五、executescript()用法(附带实例讲解)
此外,为了简化编程,SQLite 数据库模块还为数据库连接对象提供了如下 3 个方法:
execute(sql[, parameters]):执行一条 SQL 语句。
executemany(sql[, parameters]):根据序列重复执行 SQL 语句。
executescript(sql_script):执行 SQL 脚本。
六、SQLite create_function()方法:注册自定义函数
create_function(name, num_params, func)
create_function 方法包含 3 个参数:
name 参数:指定注册的自定义函数的名字。
num_params:指定自定义函数所需参数的个数。
func:指定自定义函数对应的函数。
七、create_aggregate()方法:自定义聚集函数
八、 create_collation()方法:创建自定义比较函数
create_collation 方法包含两个参数:
name:指定自定义比较函数的名字。
callable:指定自定义比较函数对应的函数。该函数包含两个参数,并对这两个参数进行大小比较,如果该方法返回正整数,系统认为第一个参数更大;如果返回负整数,系统认为第二个参数更大;如果返回 0,系统认为两个参数相等。
九、MYSQL
callproc()方法:调用数据库存储过程
上面程序中,第 13 行代码就是调用存储过程的关键代码。使用 MySQL 数据库模块调用存储过程非常简单,存储过程需要几个参数,程序通过 callproc() 方法调用存储过程时就传入一个包含几个元素的元组;对于存储过程的传入参数,该参数对应的元组元素负责为传入参数传值;对于存储过程的传出参数,该参数对应的元组元素随便定义即可。