第十四天 第十一章 SQLite3数据库

# 数据库编程接口
# 在Python Database API 2.0规范中,定义了Python数据库API接口的各个部分,如模块接口、连接对象、游标对象、类型和构造器以及
#      DB API的可选扩展以及可选的错误处理机制等

# 数据库连接对象:主要提供获取数据库游标对象和提交、回滚事务的方法,以及关闭数据库连接。
# connect()函数获取连接对象,有多个参数,具体使用哪个参数,取决于使用的数据库类型
# dsn:数据源名称,给出该参数表示数据库依赖
# user:用户名
# password:用户密码
# host:主机名
# database:数据库名称

# 连接对象的方法
# close():关闭数据库连接
# commit():提交事务(用于维护数据库的完整性)
# rollback():回滚事务
# cursor():获取游标对象,操作数据库,如执行DML操作,调用存储过程等

# 游标对象:用于指示抓取数据库操作的上下文,主要提供执行SQL语句、调用存储过程、获取查询结果等方法。
# 游标对象的属性:1 description 数据库列类型和值的描述信息  2 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 ===================
import sqlite3

# 连接数据库文件:mrsoft.db,如果该文件不存在则会自动创建
conn = sqlite3.connect('mrsoft.db')

# 创建一个cursor游标对象
cursor = conn.cursor()

try:
    # 执行一条SQL语句,创建user表,表内创建2个字段,自增序号:id和文本:name
    cursor.execute('create table user (id int(10) primary key, name varchar(20))')
    # 再次执行本程序,此处会报错,因为数据库中已经有了user这个表,不能重复创建
except:
    print('表已经存在,不能重复创建')

## insert into 表名(字段1,字段2。。。) values(值1,值2。。。)
# cursor.execute('insert into user(id,name) values(1,"mrsoft")')
# cursor.execute('insert into user(id,name) values(2,"zac")')
# cursor.execute('insert into user(id,name) values(3,"loveyou")')

# select 字段1,字段2。。。 from 表名 where 查询条件
cursor.execute('select * from user')
# sqlText = cursor.fetchall()
# print(sqlText)
# sqlText = cursor.fetchmany(2)
# print(sqlText)
# sqlText = cursor.fetchone()
# print(sqlText)

# # 使用点位符和元组的方式可以避免SQL注入的风险,推荐使用这种方式
# cursor.execute('select * from user where id > ?',(1,))
# sqlText = cursor.fetchall()
# print(sqlText)


# # 修改数据库用户信息
# cursor.execute('update user set name = ? where id > ?',('zack_love',1))
# cursor.execute('select * from user')
# sqlText = cursor.fetchall()
# print(sqlText)


# 删除用户数据信息
cursor.execute('delete from user where id = ?',(2,))
cursor.execute('select * from user')
sqlText = cursor.fetchall()
print(sqlText)

# 关闭游标
cursor.close()

# 提交事务
conn.commit()

# 关闭数据库
conn.close()

 

posted @ 2020-08-28 08:56  Zack6688  阅读(217)  评论(0编辑  收藏  举报