SQLite:一个极简使用教程
SQLite是一个轻量级的、文件系统基础的数据库,它被设计为配置简单、易于摆设。SQLite数据库存储在一个单一的磁盘文件中,这意味着数据库的创建和维护都非常简单。https://img-blog.csdnimg.cn/direct/87a74309c13b4b01ba33e775f9566aa3.png
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()
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,选择所必要的系统版本下载即可。
https://img-blog.csdnimg.cn/direct/574f8cbe7e5a45559ee60e137965e984.png
使用该软件可以可视化地查看数据库信息,比如我们上面创建了一个关于algo instance的数据库,可以用该工具打开并查看:
https://img-blog.csdnimg.cn/direct/4ffabd63b797493c8f3a0a56a8e1bee9.png
也可以浏览数据,查看我们写入的内容:
https://img-blog.csdnimg.cn/direct/bfbbffaf39384e43aa1665561f228d2f.png
参考
[*]SQLite Home Page
[*]https://en.wikipedia.org/wiki/SQLite
[*]Downloads - DB Browser for SQLite
[*]sqlite3 — DB-API 2.0 interface for SQLite databases — Python 3.12.3 documentation
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]