当前位置 博文首页 > 文章内容

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

    作者: 栏目:未分类 时间:2020-08-28 9:01:13

    本站于2023年9月4日。收到“大连君*****咨询有限公司”通知
    说我们IIS7站长博客,有一篇博文用了他们的图片。
    要求我们给他们一张图片6000元。要不然法院告我们

    为避免不必要的麻烦,IIS7站长博客,全站内容图片下架、并积极应诉
    博文内容全部不再显示,请需要相关资讯的站长朋友到必应搜索。谢谢!

    另祝:版权碰瓷诈骗团伙,早日弃暗投明。

    相关新闻:借版权之名、行诈骗之实,周某因犯诈骗罪被判处有期徒刑十一年六个月

    叹!百花齐放的时代,渐行渐远!



    # 数据库编程接口
    # 在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()