SQLite:一个极简使用教程

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 sqlite3

class AlgoInstanceDB(object):

def __init__(self, db_path):

self.db_path = db_path

self.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的数据库,可以用该工具打开并查看:

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

注意:linux使用该工具时,可能会出现双击无法打开的情况,除了要在属性--权限里面勾选“允许执行文件”之外,可能还会存在你的系统缺少库的情况。对于后者,需要根据报错安装相关库才行。

比如,我遇到的是:dlopen():error loading libfuse.so.2,就需要按照下面的方式安装库“

# Ubuntu 22.04 及更高版本:

sudo apt update

sudo apt install libfuse2

# Ubuntu 20.04 及更早版本:

sudo apt update

sudo apt install fuse libfuse2

参考

SQLite Home Pagehttps://en.wikipedia.org/wiki/SQLiteDownloads - DB Browser for SQLitesqlite3 — DB-API 2.0 interface for SQLite databases — Python 3.12.3 documentation

相关灵感

Bet体育365提款验证 《不思议迷宫》怎么选择阵营 不思议迷宫阵营推荐
365bet世界杯官网 国务院办公厅关于2016年部分节假日安排的通知
365bet世界杯官网 Excel表格打印出来很小怎么办?Excel打印出来太小的解决方法
365bet世界杯官网 太平保险和太平洋哪个好

太平保险和太平洋哪个好

📅 06-30 👁️ 3932
365bet世界杯官网 Apple充值未到账

Apple充值未到账

📅 08-01 👁️ 8208
365bet世界杯官网 使用VHD创建本地虚拟系统

使用VHD创建本地虚拟系统

📅 07-19 👁️ 6604
beat365简易版网页 耐克Tiempo Legend 9 Elite世界杯配色足球鞋
365bet世界杯官网 电脑钉钉直播怎么播放视频

电脑钉钉直播怎么播放视频

📅 09-13 👁️ 5831
365bet世界杯官网 非夕 的专栏:弄墨小筑

非夕 的专栏:弄墨小筑

📅 07-07 👁️ 5277