当前位置 博文首页 > python 操作sqlite数据库的方法

    python 操作sqlite数据库的方法

    作者:临时营地 时间:2021-08-06 18:32

    目录
    • 前言
    • 简单介绍
    • 创建或连接数据库
    • 游标
    • 创建表
    • 插入
    • 查询
      • 查询总数
      • 查询所有
      • 查询第一条
      • 分页查询
    • 更新
      • 删除
        • 总结

          前言

          sqlite的官网 sqlite.org/index.html SQLite 作为一个SQL数据库引擎,是由C语言实现的,又小又快,具有高可靠性且功能齐全。 作为嵌入式数据库,在移动设备中使用非常广泛且方便。Python3中内嵌了sqlite的驱动,我们直接导入就行。

          import sqlite3
          

          简单介绍

          首先我们给大家一个能够运行的Python程序,让大家对Python操作sqlite数据库有一个直观的感受。

          # 导入SQLite驱动:
          import sqlite3
          # 连接到SQLite数据库
          # 数据库文件是test.db
          # 如果文件不存在,会自动在当前目录创建:
          conn = sqlite3.connect('test.db')
          # 创建一个Cursor:
          cursor = conn.cursor()
          # 执行一条SQL语句,创建user表:
          cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
          
          
          # 继续执行一条SQL语句,插入一条记录:
          cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
          
          
          # 通过rowcount获得插入的行数:
          print(cursor.rowcount)
          
          
          # 关闭Cursor:
          cursor.close()
          # 提交事务:
          conn.commit()
          # 关闭Connection:
          conn.close()
          

          我们用Navicat连接这个数据库,可以看到

          需要注意的是每次关闭连接之前,一定要commit,否则做的任何操作都不会提交到数据库中

          创建或连接数据库

          conn = sqlite3.connect('test.db') 首先我们要做的是连接数据库,注意如果我们要访问的数据库不存在,那么会自动创建一个的 conn 就是一个数据库连接对象从上面的程序里我们可以看到

          1.它可以创建一个游标cursor = conn.cursor()
          2.它可以提交事务conn.commit()
          3.它还可以关闭连接cursor.close()
          4.它还可以对事务做回滚cursor.rollback(),不过程序之中没有展示出来

          隔离级别可以在conn建立之前通过传入参数来进行修改
          conn = sqlite3.connect('test.db', isolation_level=None) 这样,对应的代码就不再需要commit()操作了

          游标

          游标对象有以下的操作

          execute()--执行sql语句   
          executemany--执行多条sql语句   
          close()--关闭游标   
          fetchone()--从结果中取一条记录,并将游标指向下一条记录   
          fetchmany()--从结果中取多条记录   
          fetchall()--从结果中取出所有记录   
          scroll()--游标滚动  
          

          我们一般用到的是execute()更多一些

          创建表

          下面的代码可以创建表

          cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
          

          可以看到建表语句和MySQL非常类似 创建自增主键的语句

          CREATE TABLE "main"."test" (
            "id" integer NOT NULL PRIMARY KEY AUTOINCREMENT
          );
          

          在Navicat的创建sqlite自增主键和MySQL也是非常类似

          插入

          插入这里很简单的

          cursor.execute('insert into user (id, name) values (\'1\', \'Michael\')')
          

          查询

          查询这里需要讲一讲 是要先让游标将sql语句执行掉,再通过上面介绍的

          fetchone()--从结果中取一条记录,并将游标指向下一条记录   
          fetchmany()--从结果中取多条记录   
          fetchall()--从结果中取出所有记录   
          

          来进行查询

          查询总数

          cursor.execute("select count(*) from user")
          print(cursor.fetchone())
          # (2,)
          

          查询所有

          cursor.execute("select * from user")
          print(cursor.fetchall())
          # [('1', 'Michael'), ('2', 'Danny')]
          

          查询第一条

          cursor.execute("select * from user")
          print(cursor.fetchone())
          # ('1', 'Michael')
          

          分页查询

          cursor.execute("select * from user LIMIT 1, 2")
          print(cursor.fetchall())
          

          更新

          更新呢也比较简单

          cursor.execute("update user set name='test' where id='1'")
          

          这里只要别忘了执行commit就行

          删除

          cursor.execute("delete from catalog where id = 4")
          

          总结

          人生苦短,我用 Python,在强大的Python帮助下,我们只需几行代码就可以操作sqlite数据库来储存查询我们想要的数据。

          jsjbwy
          下一篇:没有了