SQLite:一个极简使用教程

SQLite是一个轻量级的、文件系统基础的数据库,它被设计为配置简单、易于部署。SQLite数据库存储在一个单一的磁盘文件中,这意味着数据库的创建和维护都非常简单。

1. SQLite特点

  • 轻量级:SQLite不需要一个独立的服务器进程。它是一个嵌入式SQL数据库引擎,库文件被集成到应用程序中。
  • 零配置:SQLite不需要任何配置就可以运行,这使得它非常适合小型应用、原型开发、临时数据库等场景。
  • 跨平台:SQLite可以在多种操作系统上运行,包括Windows、macOS、Linux、Unix等。
  • 事务支持:SQLite支持ACID兼容的事务。
  • 并发控制:SQLite支持读写并发,写操作会锁定数据库,而读操作则可以并发执行。
  • 存储限制:SQLite数据库的大小限制为2^31个页面,每个页面默认为1KB,这意味着最大数据库大小可以达到140TB(取决于页面大小)。
  • 编程语言接口:SQLite提供了多种编程语言的接口,包括C, C++, Python, Java, PHP, Ruby等。
  • 无需安装:SQLite作为一个库文件,可以直接嵌入到应用程序中,无需单独安装。
  • 开源:SQLite是开源软件,根据公共领域授权发布。
  • 适合轻量级应用:由于其轻量级的特性,SQLite非常适合用于移动应用、桌面应用、小型网站等。
  • 内置函数丰富:SQLite提供了丰富的内置函数,可以处理字符串、日期和时间、数学运算等。
  • 支持多种查询:SQLite支持大多数SQL查询,包括JOIN、事务、触发器、视图等。

2. 代码示例

        我们定义一个名为 AlgoInstanceDB 的类,用于管理一个SQLite数据库,该数据库用于存储算法实例的信息,包括它们的唯一标识符(id)和进程ID(pid)。简单描述下实现的功能:

  • 初始化 (__init__ 方法):

    • 接收数据库文件的路径 (db_path)。
    • 连接到SQLite数据库,如果文件不存在,会自动创建。
    • 调用 create_table 方法来确保数据库中存在必要的表。
  • 创建表 (create_table 方法):

    • 使用 CREATE TABLE IF NOT EXISTS 语句来创建一个名为 algo_instances 的表,如果该表尚不存在。
    • 表包含两列:id(文本类型,唯一)和 pid(整型)。
  • 获取算法实例的PID (get_algo_instance_pid 方法):

    • 接收一个 algo_instance_id
    • 查询数据库,返回与该 id 相关联的 pid
  • 插入或更新算法实例 (insert_algo_instance 方法):

    • 接收 algo_instance_id 和 pid
    • 使用 INSERT OR REPLACE 语句来插入新记录或更新现有记录。
    • 这确保了每个 id 是唯一的。
  • 查询算法实例 (query_algo_instance 方法):

    • 接收一个 algo_instance_id
    • 查询数据库,返回与该 id 相关的整条记录。
  • 删除算法实例 (delete_algo_instance 方法):

    • 接收一个 algo_instance_id
    • 从 algo_instances 表中删除与该 id 相关联的记录。
  • 更新算法实例的PID (update_algo_instance 方法):

    • 接收 algo_instance_id 和 new_pid
    • 更新 algo_instances 表中指定 id 的记录,设置新的 pid
import sqlite3class AlgoInstanceDB(object):def __init__(self, db_path):self.db_path = db_pathself.conn = sqlite3.connect(db_path)self.create_table()def create_table(self):"""创建表."""cursor = self.conn.cursor()cursor.execute("""CREATE TABLE IF NOT EXISTS algo_instances (id TEXT UNIQUE,pid INTEGER)""")self.conn.commit()def get_algo_instance_pid(self, algo_instance_id):"""获取算法实例的PID."""cursor = self.conn.cursor()cursor.execute("SELECT pid FROM algo_instances WHERE id = ?", (algo_instance_id,))return cursor.fetchone()[0]def insert_algo_instance(self, algo_instance_id, pid):"""插入或更新算法实例."""cursor = self.conn.cursor()cursor.execute("INSERT OR REPLACE INTO algo_instances (id, pid) VALUES (?, ?)", (algo_instance_id, pid))self.conn.commit()def query_algo_instance(self, algo_instance_id):"""查询算法实例是否存在."""cursor = self.conn.cursor()cursor.execute("SELECT * FROM algo_instances WHERE id = ?", (algo_instance_id,))return cursor.fetchone()def delete_algo_instance(self, algo_instance_id):"""删除算法实例."""cursor = self.conn.cursor()cursor.execute("DELETE FROM algo_instances WHERE id = ?", (algo_instance_id,))self.conn.commit()def update_algo_instance(self, algo_instance_id, new_pid):"""更新算法实例的PID."""cursor = self.conn.cursor()cursor.execute("UPDATE algo_instances SET pid = ? WHERE id = ?", (new_pid, algo_instance_id))self.conn.commit()if __name__ == "__main__":db_path = "algo_instances.db"db = AlgoInstanceDB(db_path)# 示例:插入或更新算法实例# db.insert_algo_instance("A001", 1234)# 示例:查询算法实例query = db.query_algo_instance("A002")print(query)# 示例:删除算法实例# db.delete_algo_instance("A002")# 示例:更新算法实例的PID# db.update_algo_instance("A001", 5678)

3. 使用数据库工具进行管理

        DB Browser是个专门用于SQLite的数据库管理工具,可以从这里下载:Downloads - DB Browser for SQLite,选择所需要的系统版本下载即可。

        使用该软件可以可视化地查看数据库信息,比如我们上面创建了一个关于algo instance的数据库,可以用该工具打开并查看:

也可以浏览数据,查看我们写入的内容:

参考

  1. SQLite Home Page
  2. https://en.wikipedia.org/wiki/SQLite
  3. Downloads - DB Browser for SQLite
  4. sqlite3 — DB-API 2.0 interface for SQLite databases — Python 3.12.3 documentation

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/36887.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万物皆可爬——亮数据代理IP+Python爬虫批量下载百度图片助力AI训练

💂 个人网站:【 摸鱼游戏】【神级代码资源网站】【导航大全】🤟 一站式轻松构建小程序、Web网站、移动应用:👉注册地址🤟 基于Web端打造的:👉轻量化工具创作平台💅 想寻找共同学习交…

注意!!2024下《网络规划设计师》易混淆知识点来了,赶紧码住

宝子们,在复习软考网络规划设计师中,是不是觉得有很多知识点含义比较相近,很多友友刚看的时候,估计会像我一样把它们弄混,作为一个软考老鸟,在这里给大家整理了网规学习过程中易混淆的知识点,大…

Detailed Steps for Troubleshooting ORA-00600 [kdsgrp1] (文档 ID 1492150.1)

Detailed Steps for Troubleshooting ORA-00600 [kdsgrp1] (文档 ID 1492150.1)​编辑转到底部 In this Document Purpose Troubleshooting Steps References APPLIES TO: Oracle Database - Enterprise Edition Oracle Database Cloud Schema Service - Version N/A and lat…

Ngnix内存池——高并发实现高效内存管理

目录 一、高并发下传统方式的弊端 1、常用的内存操作函数 2、弊端一 3、弊端二 4、弊端三 5、弊端四 二、弊端解决之道 1、内存管理维度分析 2、内存管理组件选型 三、高并发内存管理最佳实践 1、内存池技术 2、内存池如何解决弊端 3、高并发内存池如何实现 四、…

《数字图像处理与机器视觉》案例二(基于边缘检测和数学形态学焊缝图像处理)

一、前言 焊缝是评价焊接质量的重要标志,人工检测方法存在检测标准不统一,检测精度低,焊缝视觉检测技术作为一种重要的质量检测方法,正逐渐在各行各业中崭露头角。把焊缝准确的从焊接工件中准确分割出来是焊缝评价的关键一步&…

linux上git的使用

目录 1.测试是否安装有git 2.下载项目到本地 3.三板斧 1.将代码放在创建的目录中 2.提交改动到本地 3.提交代码到远端 4.注意点 以及补充内容 1.测试是否安装有git 如果输入git --help 会显示下面一大串那么就是已经安装,否则需要自行手动安装 yum install g…

洁盟超声波清洗机怎么样?横向测评希亦、洁盟、苏泊尔超声波清洗机谁是实力派

生活中大多数人戴眼镜,但是很多人都不注意眼镜的保养,导致镜片越来越模糊,从而引发多边的状况发生,比如长久戴模糊不清的眼镜,视力会受到影响随之下降。甚至是眼镜长期不清洗,上面的灰尘、细菌会影响眼部健…

彩虹PLM系统在航空航天业的应用与实践

彩虹PLM系统在航空航天业的应用与实践 彩虹PLM系统作为航空航天业的卓越解决方案,已经在众多企业中得到了广泛的应用和实践。该系统通过其独特的功能和优势,为航空航天企业带来了显著的管理效益和市场竞争力提升。 彩虹PLM系统 在应用方面,彩…

1.2 离散LTI系统的时域分析

目录 离散系统的定义 离散LTI系统的时域描述h[k] 离散系统的分类 线性与非线性系统 时变与非时变系统 因果与非因果系统 稳定与不稳定系统 滑动平均系统 LTI——Linear and Time-invariant System 线性时不变系统 离散系统的定义 离散LTI系统的时域描述h[k] 离…

【并发编程】2-Synchronized

基本概念 线程安全问题三个要素:多线程、共享资源、非原子性操作;产生的根本原因:多条线程同时对一个共享资源进行非原子性操作;Synchronized解决线程安全问题的方式:通过互斥锁将多线程的并行执行变为单线程串行执行…

昇思25天学习打卡营第4天|数据集Dataset

数据集 Dataset 介绍 之前说过,MindSpore是基于Pipeline,通过Dataset和Transformer进行数据处理。Dataset在其中是用来加载原始数据的。mindSpore提供了数据集加载接口,可以加载文本、图像、音频等,同时也可以自定义加载接口。此…

【UE开发】游戏库存UI系统Demo

1.项目介绍 1.描述:一种用于存储记录玩家物品的游戏内可视化操作系统。 2.演示:https://www.bilibili.com/video/BV1f53neVEfW/?vd_source50dea901fd12253f417c48b937975b0d 3.大纲: 4.样式: 2.W_Inventory_Main_01(…

CORE Mobility Errorr的调试

在运行CORE tutorial 3中的mobility示例时,出现如下错误: 当看到这个问题的时候,并没有仔细去分析日志和现象,在core-daemon的进程打印界面只看了一下最后的出错堆栈: 2024-06-27 10:43:48,614 - ERROR - _server:_ca…

MySQL8 新特性——公用表表达式用法 with t1 as (select * from user)

MySQL8 新特性——公用表表达式用法_mysql ctes-CSDN博客 1.普通公用表表达式 MySQL8 新特性——公用表表达式用法 在MySQL 8.0及更高版本中,引入了公用表表达式(Common Table Expressions,CTEs),它是一种方便且可重…

docker部署vue项目

1.下载docker desktop软件 Docker Desktop启动的时候,有可能弹框提示"WSL2 installations is incomplete",这是您的系统中没有安装WSL2内核的原因,打开【https://aka.ms/wsl2kernel ,在打开的页面中有一个Linux内核更新包"链…

【python011】经纬度点位可视化html生成(有效方案)

1.熟悉、梳理、总结项目研发实战中的Python开发日常使用中的问题、知识点等,如获取省市等边界区域经纬度进行可视化,从而辅助判断、决策。 2.欢迎点赞、关注、批评、指正,互三走起来,小手动起来! 3.欢迎点赞、关注、批…

STM32将外部SDRAM空间作为系统堆(Heap)空间

概述 stm32可以外扩很大的sram,常见外部sram的初始化函数一般是c语言写的,默认写在main函数里面。stm32初始化首先进入汇编代码startup_stm32f429xx.s,在汇编代码中Reset_Handler(复位中断服务程序)里面先调用了Syste…

vue + Lodop 制作可视化设计页面 实现打印设计功能(二)

历史: vue2 Lodop 制作可视化设计页面 实现打印设计功能(一) 前言: 之前本来打算用直接拿之前做的vue2版本改改就发的,但考虑到现在主流都是vue3了,所以从这篇文章开始使用vue3来写,以及最后…

三相LCL滤波型PWM逆变器仿真设计

参考并网电流外环电容电流前馈内环的双闭环控制结构,在光伏和风力发电网侧变换器中的应用,可以显著提高系统的稳定性和效率。在并网电流外环中,通过检测电网电流并与其参考值进行比较,可以得到一个电流误差信号。这个电流误差信号…

MySQL基础查询与复杂查询

基础查询 1、查询用户信息,仅显示用户的姓名与手机号,用中文显示列名。中文显示姓名列与手机号列。 2、根据商品名称进行模糊查询,模糊查询需要可以走索引,需要给出explain语句。使用explain测试给出的查询语句,需要显…