python 操作sqlite数据库的方法

作者:临时营地 时间:2024-01-26 04:18:43 

目录
  • 前言

  • 简单介绍

  • 创建或连接数据库

  • 游标

  • 创建表

  • 插入

  • 查询

    • 查询总数

    • 查询所有

    • 查询第一条

    • 分页查询

  • 更新

    • 删除

      • 总结

        前言

        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连接这个数据库,可以看到

        python 操作sqlite数据库的方法

        需要注意的是每次关闭连接之前,一定要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也是非常类似

        python 操作sqlite数据库的方法

        插入

        插入这里很简单的


        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数据库来储存查询我们想要的数据。

        来源:https://juejin.cn/post/6975528484340760590

        标签:python,sqlite,数据库
        0
        投稿

        猜你喜欢

      • Golang 中的 条件变量(sync.Cond)详解

        2024-04-25 15:28:32
      • TensorFlow平台下Python实现神经网络

        2023-10-11 22:31:31
      • python密码学周期置换密码学习

        2021-09-21 16:45:39
      • 把CSV文件导入到SQL Server表中的方法

        2024-01-20 17:22:13
      • php使用ZipArchive函数实现文件的压缩与解压缩

        2023-07-12 20:58:19
      • 用python实现的去除win下文本文件头部BOM的代码

        2021-04-01 08:00:19
      • javascript中利用柯里化函数实现bind方法【推荐】

        2024-05-02 17:29:26
      • Python循环语句介绍

        2021-04-19 20:04:42
      • Tensorflow中使用cpu和gpu有什么区别

        2021-10-15 15:48:45
      • go并发实现素数筛的代码

        2024-04-27 15:38:03
      • 手把手教你将Vim改装成一个IDE编程环境(图文) 吴垠

        2023-09-09 22:40:43
      • JavaScript 字符串连接性能优化

        2024-05-11 09:35:53
      • python dataframe向下向上填充,fillna和ffill的方法

        2021-11-07 18:16:47
      • Python实现"验证回文串"的几种方法

        2021-03-28 15:48:57
      • Python中人脸图像特征提取方法(HOG、Dlib、CNN)简述

        2021-09-16 21:38:59
      • python中if的基础用法(if else和if not)

        2021-02-01 01:56:18
      • asp.net实现存储和读取数据库图片

        2024-01-19 06:56:32
      • python分布式环境下的限流器的示例

        2023-07-11 19:25:38
      • Pytho的HTTP交互httpx包模块使用详解

        2022-11-17 06:03:29
      • Python入门教程(二)Python快速上手

        2023-10-16 08:54:09
      • asp之家 网络编程 m.aspxhome.com