zoukankan      html  css  js  c++  java
  • Python3操作SQLite数据库

    Python3操作SQLite数据库

    SQLite

    SQLite,是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite第一个Alpha版本诞生于2000年5月。 至2019年已经有19个年头,SQLite也迎来了一个版本 SQLite 3已经发布。[摘自SQLite百度百科]

    功能特性

    • ACID事务
    • 零配置 – 无需安装和管理配置
    • 支持数据库大小至2TB
    • 比一些流行的数据库在大部分普通数据库操作要快
    • 独立: 没有额外依赖
    • 支持多种开发语言,C, C++, PHP, Perl, Java, C#,Python, Ruby等

    数据类型

    • Typelessness(无类型)
    • 支持常用的数据库类型

    使用Python3操作SQLite

    python2.5以后的安装包已经自带SQLite3的软件包了,所以直接导入使用即可。
    import sqlite3
    

    第一步:连接数据库(如果数据库不存在就会创建新的数据库)

    # 可以指定创建数据库的路径,比如可以写成sqlite3.connect(r"E:DEMO.db")
    con = sqlite3.connect("DEMO.db")
    

    第二步:创建游标

    cur = con.cursor()
    

    第三步:CURD操作

    (一) 创建表

    sql = "CREATE TABLE IF NOT EXISTS test(id INTEGER PRIMARY KEY,name TEXT,age INTEGER)"
    cur.execute(sql)
    
    创建完数据库和表后的结构示意图:

    (二) 添加数据(需要提交)

    # ①:添加单条数据
    data = "1,'Desire',5"
    cur.execute('INSERT INTO test VALUES (%s)' % data)
    # ②:添加单条数据
    cur.execute("INSERT INTO test values(?,?,?)", (6, "zgq", 20))
    # ③:添加多条数据
    cur.executemany('INSERT INTO test VALUES (?,?,?)', [(3, 'name3', 19), (4, 'name4', 26)])
    
    操作后的数据库如下图:

    (三) 更新数据(需要提交)

    # 方式一
    cur.execute("UPDATE test SET name=? WHERE id=?", ("nihao", 1))
    # 方式二
    cur.execute("UPDATE test SET name='haha' WHERE id=3")
    
    操作后的数据库如下图:

    (四) 删除数据(需要提交)

    # 方式一
    cur.execute("DELETE FROM test WHERE id=?", (1,))
    # 方式二
    cur.execute("DELETE FROM test WHERE id=3")
    
    操作后的数据库如下图:

    (五) 查询数据

    数据库中的数据如下:

    1、查询所有数据
    cur.execute("select * from Test")
    print(cur.fetchall())
    
    结果如下:

    2、查询第一条数据
    cur.execute("select * from Test")
    print(cur.fetchone())
    
    结果如下:

    3、查询多条数据
    print(cur.fetchmany(3))
    
    结果如下:

    第四步:事务的提交和回滚

    提交
    con.commit()
    
    回滚
    con.rollback()
    

    第五步:断开会话连接,释放资源

    # 关闭游标
    cur.close()
    # 断开数据库连接
    con.close()
    

    关于SQLite数据类型的Typelessness(无类型)

    创建一个无类型的表(创建表的SQL语句字段不加类型即可)

    sql = "CREATE TABLE IF NOT EXISTS user(clo_1,clo_2,clo_3)"
    cur.execute(sql)
    
    创建成功后的结构:

    添加数据的时候就可以添加任意类型的数据(没有限制)

    sql = 'INSERT INTO user VALUES (?,?,?)'
    data = [(9, 'name3', 19), ('name4', 26, "nihao"), ('nihao', 3, 2.89)]
    cur.executemany(sql, data)
    con.commit()
    
    添加成功后的表内容:

    -----------------------------------------------------------------------------
    *以上便是SQLite在Python中简单的操作,查看表结构可以用Navicat for SQLite可视化工具

  • 相关阅读:
    Amazon Hiring Campus 2013
    Java历史
    vue配置环境踩坑
    ES6 第十八节 模块化操作
    ES6 第十七节 class类的使用
    ES6 第十六节 promise对象的使用
    ES6 第十五节 用proxy进行预处理
    ES6 第十四节 map数据结构
    ES6 第十三节 Set和WeakSet数据结构
    ES6 第十二节 Symbol在对象中的作用
  • 原文地址:https://www.cnblogs.com/desireyang/p/12102143.html
Copyright © 2011-2022 走看看